关于前端的一点思考
来源:互联网 发布:红包源码 编辑:程序博客网 时间:2024/04/29 21:50
关于前端的一点思考
Author:tkorays
最近写前端代码,写着写着就突然开始惆怅、忧伤、愤怒、发狂,我TMD到底在干什么啊!
很多东西写了n遍了,但是还是在不停地写着。自己写过的代码也不想再修改完善、重新利用,只是觉得,可能重新写一遍可能要好点。面对这很多库以及框架,虽然喜爱,但是也是有所顾忌,我只要使用其中的一个功能,根本不需要引入这么大的整个库。
事实上,我们可能在动手写任何代码之前,先要思考下,我们到底要的是什么!
0x00 界面真的需要这么炫酷么
在使用某个界面库之前,我们可能先需要了解下,使用这个界面库是否值得,你真的非需要它不可吗?
如果你写一个简单的页面,可能自己可以实现一些效果;如果你写一个博客,可能你会考虑使用bootstrap;如果你要做一个比较大的网站,那么你可能要考虑得要多了。
- 某些效果自己能否实现
- 其他库是否提供了现成的实现方案
- 使用其他库是否值得,它是否很大,是否难以集成,学习成本是否高
- 你的页面真的需要这么炫酷吗
其实,很多时候我们需要取舍一下。你自己慢慢敲,实现了炫酷的功能却不能在期限内完成任务,这是一件多么忧伤的事情!最后你才发现,功能以及界面的友好才是重要的哦,太炫酷而没有实现功能或者交互十分蛋疼,用户也是会吐槽的。
0x01 前端自动化
最近前端里面比较火的工具可能要算上Grunt、gulp等了。
它对我的帮助的确不少!
- 把less写好的样式表编译成css
- javascript、css文件的合并和压缩
- 修改了文件保存后,页面自动刷新
- 更改文件后,自动完成编译less、合并压缩文件等任务
所以我们可以放心地使用less、coffescript来编写,不用自己去完成编译、合并、压缩这样繁琐的过程。
同时我们可以自己配置grunt、编写grunt插件,完成更多功能。
不过,我觉得一个小的页面就不要使用grunt这样的大东西去找虐了。
0x02 javascript代码模块化
随着业务的复杂,页面增多,我们需要的不再是几个javascript文件。我们需要引入许多的第三方库,自己还编写了很多的模块,如果使用传统的方式:
<script src="lib/a.js"></script><script src="lib/b.js"></script><!-- blabla --><script src="c.js"></script><script src="d.js"></script>
要是需要的js文件多,这样写一大堆,实在不是明智的选择。
因此我们需要将javascript代码模块化,动态加载javascript,必要的时候按需加载。AMD(异步模块定义)、CMD(通用模块定义),都能实现。他们稍微有些区别,这里不去深究。
如果想尝试下这种模块化的方法,可以考虑使用AMD规范的requirejs,也可以考虑使用CMD规范的seajs。很多开源库如jquery,都支持这两种方式的加载。因此,不要犹豫,考虑下使用它们来将你的代码模块化,构建一个结构清晰的应用把。
0x03 前端框架
最近前端的一些框架比较火,比如backbone.js、angular.js、react.js、ember.js。这些框架不同于jquery,确切地说jquery应该被称为库。
框架提供的是一套解决方案或者说模式,而jquery等库提供了dom的操作函数、或是一些页面组件。
这些框架有的是采用了MVC(Model-View-Controller),有的采用MVP(Model-View-Presenter),有的是MVVM(Model-view-View Model)。后两种都是由MVC演变而来。像其他地方的MVC一样,这里也是使用这样的思想对待页面和数据的。
我们知道,在后台我们可能会使用MVC的方式,View代表了要显示的页面。而这样的方式满足不了web2.0的需求,我们使用服务器端脚本生成页面发送到浏览器,浏览器还要通过ajax请求数据,更新页面内容,这样做似乎让逻辑复杂。现在对于前端页面来说,数据处理似乎也是需要一套方式。
这些框架有的(不太了解所有框架,不知道是否全部都支持双向绑定)有数据双向绑定的功能(如angular.js),数据流通的方向可以是页面到json对象(页面更新数据也更新),也可以是由json对象到页面(数据更新页面也更新)。在angular.js里面,数据是自动更新的,这样做实在太方便了,构造了数据与页面的映射关系,编写太多代码更新页面或者获取数据。
在使用之前,得考虑,是否真的需要它。如果你的网页有很多的ajax,接收到很多的json数据,并且需要更新到页面上,那么,或许你应该试试他们。
0x04 后记
做前端是有趣的,但是也是要清楚你到底需要什么!只选最合适的,不选最牛逼的。
- 关于前端的一点思考
- 关于前端路由和后端路由的一点思考
- 关于 && 的一点思考
- 关于计算机体系结构的一点思考。
- 关于计算机体系结构的一点思考
- 关于继承的一点思考
- 关于盗版的一点思考
- 关于宏的一点思考
- 关于计算机的一点思考
- 关于编程的一点思考
- 关于软件设计的一点思考
- 关于string的一点思考
- 关于makefile的一点思考
- 关于“概念”的一点思考
- 关于重载的一点思考
- 关于XSS的一点思考
- 关于code的一点思考
- 关于建构主义的一点思考
- hdu 2578 Dating with girls(1)(二分查找)
- 初探Activemq
- (6)设计模式:工厂模式
- python中的高等函数初探
- 写在今天的开车教训
- 关于前端的一点思考
- 使用storyboard创建导航控制器以及控制器的生命周期
- LeetCode OJ Minimum Window Substring
- iOS容易造成循环引用的三种场景,就在你我身边!
- 黑马程序员—OC学习笔记—OOP中一个类包含另外一个类的对象
- Object-C中的NSString
- cocos2d-x随机数的产生
- Android入门:隐式Intent
- BCB ServerSocket多线程示例