Web前端----Javascript模块化

  • 概述
  • Javascript模块化
    • 面向过程
    • 面向对象
    • 模块化开发

概述



    一提到模块化,也许我们首先想到的是做项目的时候进行模块设计,按照功能划分不同的模块,最后通过模块的选择和组合组成最终的产品;那把模块化的思想放到前端页面,js上来是不是也适用?当然,而且也能很好的提高我们项目的开发效率。

    开发过前端界面的同志们都知道,最一开始的时候,让你用CSS写界面的样式,初入职场的程序员一般都这么写:从上到下依次编写,有新的样式需要添加,就在下面接着写,从来不去考虑是否有公共样式,着重在样式的实现上,怎么实现的无所谓;稍微有点经验的程序员就会开始注意到公共样式的问题,把一些公共的样式抽出来,从而来达到复用的结果,比如:按钮,颜色,图标等,这样节省时间,也提高了开发效率;这还不是终极的,高级的程序员一般会把一些公共的功能模块提取出来,比如说导航,版权信息等,实现部分公共模块的复用。

Javascript模块化


面向过程

    2005年以前,JavaScript没人重视,只作为表单验证等少量应用。那时一个网页上写不了几行JS代码,1000行算很复杂了。这时组织代码的方式是过程式,几十行的代码甚至连一个函数都不用写。稍多的需要提取抽象出一个函数,更复杂一些则需要更多函数,函数间互相调用。

/*面向过程*/
//说
function sayHello(){
    return "hello";
}
//读
function readBook(){
    return "readBook!";
}
//听
function listenSong(){
    return "Good Time!";
}
//写
function writeName(){
    return "zhangling";
}

    如果说开发一个大型项目,按照面向过程的方式写了一大堆js代码,组长过来说:你把XXX的js代码找出来咱一块看看!这时你的表情一定是这样的:

面向对象

    2006年,Ajax席卷全球。JavaScript被重视了,越来越多的后端逻辑放到了前端。网页中的JS代码量急剧增加。这时写函数方式组织大量代码显得力不从心。有时调试一个小功能,从一个函数可能会跳到第N个函数去。为了解决上面的缺点,可以把模块写成一个对象,所有的模块成员都放到这个对象里面。

/*面向对象*/
//听说读写
function person(){
    return{
        count:0,
        say:function(){return "saying";},
        read:function(){return "reading";},
        listen:function(){return "listening"},
        write:function(){return "writting"}
    }

};

使用的时候直接person().say()就行了!
不过这样使用的话也有一定的缺陷:

这样的写法会暴露所有模块成员,内部状态可以被外部改写。比如,外部代码可以直接改变内部计数器的值。

Person().count=4

模块化开发

    首先我们要搞明白为什么要用模块化开发?前面的内容也大致的讲了讲,对于具体的为什么要用模块化开发,大家可以去看看前端模块化开发的价值,主要是两个问题:

其一、恼人的命名冲突

其二、烦琐的文件依赖

    在网上查了写资料,Javascript中近来用的模块化开发用SeaJsRequireJs比较多,但是具体他们两个有什么区别,还有怎么使用?在项目中用哪个更合适?后续博客中会说明,正在研究中……

时间: 2024-08-29 04:51:48

Web前端----Javascript模块化的相关文章

百度WEB前端JavaScript编程题和HTML/CSS面试题

文章简介:笔试题,百度流程信息管理部Web前端实习研发工程师. 笔试题,百度流程信息管理部Web前端实习研发工程师. JavaScript编程题1.实现输出document对象中所有成员的名称和类型:2.如何获得一个DOM元素的绝对位置?(获得元素位置,不依赖框架)3.如何利用JS生成一个table?4.实现预加载一张图片,加载完成后显示在网页中并设定其高度为50px,宽度为50px:5.假设有一个4行td的table,将table里面td顺序颠倒:6.模拟一个HashTable类,包含有add

Web前端优化最佳实践之JavaScript篇

Web 前端优化最佳实践之 JavaScript 篇,这部分有 6 条规则,和 CSS 篇 重复的有几条.前端优化最佳实践,最重要的还是"实践",要理解这东西容易得很,关键是要去"实践",去"执行",去"反馈",去获取受益. 1. 脚本放到 HTML 代码页底部 (Put Scripts at the Bottom) 当一个脚本在下载的时候,浏览器干不了其它的事儿(串行了).所以,把它扔到最后面去处理.对于一些功能性的脚本,可

国产web前端框架推荐之-NEJ(网易)

NEC是纯HTML框架,那么这款NEJ就是纯JS框架了 NEJ=Nice Easy Javascript NEJ 是由网易前端组工程师们发起创建的简洁,美观,真正的跨平台web前端开发框架:她遵循的原则是 自由定制.小巧灵活.简洁易用.愉悦编码.快乐开发. 快速下载:http://nej.netease.com/download/nej-1.0.zip 特点 依赖管理:优化开发阶段脚本文件依赖关系管理,所有脚本按需打包发布,上线产品分离依赖因此无任依赖相关开销 平台适配:支持桌面及移动平台.浏览

web前端开发经验浅谈:分享看过的书籍和成长过程

文章简介:说说我的web前端之路 分享些前端的好书. WEB前端研发工程师,在国内算是一个朝阳职业,这个领域没有学校的正规教育,大多数人都是靠自己自学成才.本文主要介绍自己从事web开发以来(从大二至今)看过的书籍和自己的成长过程,目的是给想了解JavaScript或者是刚接触JavaScript的朋友,介绍如何通过循序渐进的看书来学习javascript. 一. 入门级 :就是有一定的基础(比如最常见的HTML标签及其属性.事件.方法;最常见的CSS属性;基础的JavaScript编程能力),

什么是javascript模块化

如今backbone.emberjs.spinejs.batmanjs 等MVC框架侵袭而来.CommonJS.AMD.NodeJS.RequireJS.SeaJS.curljs等模块化的JavaScript扑面而来.web前端已经演变成大前端,web前端的发展速度之快. 1)我们来看看什么是模块化? 模块化是一种将系统分离成独立功能部分的方法,可将系统分割成独立的功能部分,严格定义模块接口.模块间具有透明性.javascript中的模块在一些C.PHP.java中比较常见: unity3d脚本

使用decj简化Web前端开发(一)

声明式Javascript动态加载和浏览器事件绑定 引言 Web前端开发中,开发人员经常需要处理一些常规问题,如: 在页面中引用多个相互存在依赖关系的Javascript文件 在页面中引用CSS文件 浏览器事件绑定 表单的数据填充.数据打包提交.数据校验和格式化 页面初始化逻辑 采用传统的命令式编程范式来处理这些问题时,开发人员不得不反复地通过编写代码调用相关API来完成这些常规任务.事实上,开发人员的主要精力应该集中在业务逻辑实现上,而非在这些常规任务上过多消耗时间.声明式编程范式可以帮助开发

独家分享——大牛教你如何学习Web前端开发

转载至:http://site.douban.com/imooc/widget/notes/17984491/note/472367715/ 引语      自从2008年接触网站开发以来到现在已经有六个年头了,今天偶然整理电脑资料看到当时为参加系里面一个比赛而做的第一个网站时,勾起了在这网站开发道路上的一串串回忆,成功与喜悦.烦恼与纠结都历历在目,感慨颇多.在此与大家分享,希望对初学Web前端的各位童鞋来说有所帮助.欢迎各位吐槽.拍砖. 先从大家学习上的一个误区开始谈起. Web前端的学习误区

javascript模块化是什么及其优缺点介绍_基础知识

如今backbone.emberjs.spinejs.batmanjs 等MVC框架侵袭而来.CommonJS.AMD.NodeJS.RequireJS.SeaJS.curljs等模块化的JavaScript扑面而来.web前端已经演变成大前端,web前端的发展速度之快. 1)我们来看看什么是模块化? 模块化是一种将系统分离成独立功能部分的方法,可将系统分割成独立的功能部分,严格定义模块接口.模块间具有透明性.javascript中的模块在一些C.PHP.java中比较常见: c中使用inclu

Web前端开发与iOS终端开发的异同

语言 前端和终端作为面向用户端的程序,有个共同特点:需要依赖用户机器的运行环境,所以开发语言基本上是没有选择的,不像后台想用什么就用什么,iOS只 能用Objective-C,前端只能javascript,当然iOS还可以用RubyMotion,前端还能用GWT/CoffieScript,但 不是主流,用的人很少,真正用了也会多出很多麻烦. 这两者有个有意思的对比:变量/方法命名的风格正好相反.苹果一直鼓吹用户体验,写代码也不例外,程序命名都是用英文全称并且要多详细有多详细,力求看变量和方法名就