web开发漫谈
本文同步至微信公众号http://mp.weixin.qq.com/s?__biz=MzAxMzgwNDU3Mg==&mid=401950045&idx=1&sn=cec056802bb52f909554691d0427f4f0#rd
对后续文章感兴趣的可以扫码关注哈
对于一个非技术人员比如说pm,网站编辑等通常遇到一些问题,不知道是该找前端解决还是应该找后端。也有一些功能,既可以放到前端来做,也可以放到后端来做。这样看似一个模糊不清的问题,然而考虑到后续的维护成本,页面性能时,结论往往是明确的。
一个web应用在开发模式上通常划分为前端和后端。本文基于此,浅偿辄止的聊聊前后端开发分别都是做什么的,以为它们之间如何分工当然还有自己的工作观。希望对非技术人员或初学web开发的同学有所帮助也希望大牛们不要见笑。。
通俗地说,后端是处理数据的,前端是展示数据的。例如,当我们访问一个已展示性为主的站点时,首先会在浏览器地址栏输入该站点的网址。这是浏览器会通过DNS域名解析器获取到该网址对应的站点的ip地址,然后浏览器向对应的web服务器发送请求(http),web服务器响应该请求,从DB中获取数据,并返回给浏览器。如下图所示:红框圈出来的就是后端做的事情,响应浏览器发送的http请求,操作数据库,处理数据,然后返回。浏览器端也就是前端在拿到数据之后,对数据进行展现。这也是通常的以展示性为主的web应用的工作流程。(http为web开发的基石,不清楚的,google之)。

也就是前端关注的是用户体验。真实的还原设计稿,保证web动画的流畅性,在视觉和交互上给用户一种清爽、简洁舒适的感觉。这也是我对于一个好的设计,好的设计稿的理解。用户界面并不是越炫酷就越好的。要追求极致简洁,返璞归真。要做到简单,有时候,往往更艰难。。而数据操作,并发量,权限控制等都是后端关注的。
在对前端,后端有了一个初步的印象之后,接下来,实际开发中前后端是怎么协作的呢?一种方式是前后端开发之前预先定义好数据格式及变量的命名等,然后前端根据设计稿和预先的约定编写页面模板,将模板开发好之后,发给后端程序员。后端在拿到模板之后,操作数据库,用获取到的数据渲染模板生成html页面返回给浏览器。另一种方式是,前后端预先定义好数据格式,然后把数据以json或jsonp形式的接口暴露给前端,然后前端获取到数据之后,在前端进行模板的渲染。具体该使用哪一种方式,或是两种方式都使用,就需要根据具体的业务场景具体分析了。
按照目前的开发模式,目前还无法完全的做到前后端分离。好的应用也都是在前端后端及设计师通力配合的结果。一方面为了降低工作中的沟通成本另一方面从提升工程师自身的开发素质从整体的全局的角度上认识web开发而不是前端开发或者后端开发而言,我们都不应该只局限于前端或后端。前端工程师也应该去了解些后端的知识,后端也应该去学一些前端的知识。在保证知识广度的前提下去拓展知识的深度。
最后,正如文章开头说言,有一些功能,既可以放到前端来做,也可以放到后端来做。不同的实现方式,它的后期的维护成本以及性能往往不尽相同,有时候差别还很大。有的时候,我建议有些功能放到后端完成,并不是想减轻自己的工作量,而是考虑到这些因素之后得出的一个结论。开发当中,不可避免的会碰到一些问题、困难。我们不能因为难做而绕道采用两一种次一些的实现方案。正是因为有一些问题有困难,才有我们存在的价值。当然,一切的一切都是建立在我们每个程序员自身的基础素质之上的。。
web开发漫谈的更多相关文章
- web开发微信文章目录
Web开发微信文章目录 2015-12-13 Web开发 本文是Web开发微信的文章目录.通过目录查看文章编号,回复文章编号就能查看文章全文. 回复编号查看全文,搜索分类名可以获得该分类下的文章. ...
- 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2迁移到springMVC,我突然有了一个新的疑 ...
- Go web开发初探
2017年的第一篇博客,也是第一次写博客,写的不好,请各位见谅. 本人之前一直学习java.java web,最近开始学习Go语言,所以也想了解一下Go语言中web的开发方式以及运行机制. 在< ...
- 【初码干货】使用阿里云对Web开发中的资源文件进行CDN加速的深入研究和实践
提示:阅读本文需提前了解的相关知识 1.阿里云(https://www.aliyun.com) 2.阿里云CDN(https://www.aliyun.com/product/cdn) 3.阿里云OS ...
- .NET Web开发技术简单整理
在最初学习一些编程语言.一些编程技术的时候,做的更多的是如何使用该技术,如何更好的使用该技术解决问题,而没有去关注它的相关性.关注它的理论支持,这种学习技术的方式是短平快.其实工作中有时候也是这样,公 ...
- web 开发自动化grunt
现在web开发自动化已很流行,如何进行压缩文件,如何进行测试js是否正确,如何进行 检测html文件是否规范等等都可以通过web自动化技术进行实现,只要打一个命令即可. 本文主要是通过grunt进行实 ...
- eclipse SE增加Web开发插件
最近接触了些java项目,之前安装了eclipse SE版本.没有Web开发插件,调试不了Web代码.点击“Window”--“Preference” 左边菜单栏是找不到“Server”项来配置服务器 ...
- Web 开发中很实用的10个效果【附源码下载】
在工作中,我们可能会用到各种交互效果.而这些效果在平常翻看文章的时候碰到很多,但是一时半会又想不起来在哪,所以养成知识整理的习惯是很有必要的.这篇文章给大家推荐10个在 Web 开发中很有用的效果,记 ...
- 12款简化 Web 开发的 JavaScript 开发框架
前端框架简化了开发过程中,像 Bootstrap 和 Foundation 就是前端框架的佼佼者.在这篇文章了,我们编制了一组新鲜的,实用的,可以帮助您建立高质量的 Web 应用程序的 JavaScr ...
随机推荐
- (error) MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about t
运行redis过程中,突然报错如下: (error) MISCONF Redis is configured to save RDB snapshots, but is currently not a ...
- springmvc登陆拦截案例
一.web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=&qu ...
- mybatis动态调用表名和字段名
以后慢慢启用个人博客:http://www.yuanrengu.com/index.php/mybatis1021.html 一直在使用Mybatis这个ORM框架,都是使用mybatis里的一些常用 ...
- 返回值优化(RVO)
C++的函数中,如果返回值是一个对象,那么理论上它不可避免的会调用对象的构造函数和析构函数,从而导致一定的效率损耗.如下函数所示: A test() { A a; return a; } 在test函 ...
- CORS 协议(跨域资源共享)
跨域问题 只要协议.域名.端口有任何一个不同,都被当作是不同的域. 为什么会有跨域的限制? 之前发生过的一些跨域安全事件: 新浪微博XSS受攻击事件 2011年6月28日晚,新浪微博出现了一次 ...
- <2016-1-28>
1.链接的网址前加入?action=bs-transfer@mdp&url=http://www.baidu.com 2.登录页面的验证 <script> function log ...
- SignalR 2.0 初次使用说明
如何使用SignalR 2.0 一:首先通过Nuget安装SignalR 2.0 [本人使用的时候最新版本为2.0]2.0与之前1.X有部分命名空间和配置不同请注意 二:建一个专门的类库用来负责Sig ...
- log level
ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF
- ES6新特性之模板字符串
ES6新特性概览 http://www.cnblogs.com/Wayou/p/es6_new_features.html 深入浅出ES6(四):模板字符串 http://www.infoq.c ...
- Action向前台输出
import java.io.IOException;import java.io.PrintWriter; import javax.servlet.http.HttpServletResponse ...