最近又换部门了,好频繁地说。。。于是把这段时间搞的小工具们简单整理了一下,作了一个小的总结。这次用一个简单业务demo来向大家介绍一下Javascript模块化开发的方式和自动化合并压缩的一些自己的处理。

模块化开发已经有一些标准(AMD/CMD)而且现在也算比较普及了,其为开发人员提供了很大的方便。模块化开发可以按结构整理代码,将一些功能分小颗粒来实现,这样的代码维护起来会方便很多,也更灵活,更容易在一定程度上去满足各种需求的变更。

比如这是demo中的代码结构:

  

  先说page目录,这里的每一个js文件对应于一个页面,这就是页面js的入口文件,所有的功能模块通过对应的js去加载。

  general目录就是一般的针对业务的一些功能,比如这里的picView就是一个图片查看功能,该目录的定位是与业务紧密相关。

  common目录就是相对业务要底层一些,属于基础组件,它可以在各业务模块中使用,组成业务相关的功能。

  utils目录其实就是一个函数库,也跟业务没关系,只是实现一般常用小颗粒功能的封装。

  lib目录就是放的第三方的一些库,比如jquery,requirejs

  conf就是进行一些项目的配置

这样我们就可以把各功能按其职责分别扔到相应的目录下以实现各模块的分类。

我们在开发中的时候就可以像这样:

<script type="text/javascript" src="../js/lib/require.js"></script>
<script type="text/javascript" src="../js/conf/requireConf.js"></script>
<script type="text/javascript" src="../js/page/index.js"></script>

引入页面代码后,在页面入口文件进行开发了。

开发确实方便,不过上线的话,肯定不能直接这么上线,因为从前端优化的角度上讲,一般情况下我们是需要尽量减少请求的。现在的情况是模块越多,我们的请求肯定也会很多,性能就会受到影响。虽然模块化加载工具已经提供了处理方法(像requireJS有r.js来进行编译),但始终还是要依赖于require.js引导文件,这样会有点多余。于是我的处理方式就是将这些模块文件按页面合并后,再进行代码原生化处理,这要就去除了define/require的依赖,也就不再需要引入像require.js这样的引导文件(虽然在代码编写中需要有一些约束,不过还是能满足大部分情况吧。),使用方法就是在项目的build目录里进行grunt build就行了,具体可以在demo中尝试。

demo地址:

  https://github.com/randomyang/javascript-module

而且大家可以根据代码里的注释自己切换不同情况看效果。

最后说明一下,这次讨论的应用场景只适合单文件一次引入的时候,如果是多文件或有业务交互中异步引入的方式,暂不在这次讨论之列,这里只是给大家提供一种开发方式的选择,谢谢。

Javascript 模块化开发上线解决方案的更多相关文章

  1. Javascript模块化开发-轻巧自制

    Javascript模块化开发-轻巧自制 一.前言现在javascript的流行,前端的代码越来越复杂,所以我们需要软件工程的思想来开发前端.模块化是必不可少的,这样不仅能够提高代码的可维护性.可扩展 ...

  2. Javascript模块化开发,使用模块化脚本加载工具RequireJS,提高你代码的速度和质量。

    随着前端JavaScript代码越来越重,如何组织JavaScript代码变得非常重要,好的组织方式,可以让别人和自己很好的理解代码,也便于维护和测试.模块化是一种非常好的代码组织方式,本文试着对Ja ...

  3. JavaScript模块化开发整理

    在网上已经有很多关于模块化开发的文章了,这里还是按照自己的理解来整理一下. 随着项目文件的越来越大和需求的越来越贴近现实(我发现现在客户不如:一个领导说我要审批你们报上来的资料,系统发布以后用的还不错 ...

  4. JavaScript模块化开发的那些事

    模块化开发在编程开发中是一个非常重要的概念,一个优秀的模块化项目的后期维护成本可以大大降低.本文主要介绍了JavaScript模块化开发的那些事,文中通过一个小故事比较直观地阐述了模块化开发的过程. ...

  5. JavaScript模块化开发&&模块规范

    在做项目的过程中通常会有一些可复用的通用性功能,之前的做法是把这个功能抽取出来独立为一个函数统一放到commonFunctions.js里面(捂脸),实现类似于snippets的代码片段收集. fun ...

  6. 详解JavaScript模块化开发

    什么是模块化开发? 前端开发中,起初只要在script标签中嵌入几十上百行代码就能实现一些基本的交互效果,后来js得到重视,应用也广泛起来了,jQuery,Ajax,Node.Js,MVC,MVVM等 ...

  7. 2.精通前端系列技术之JavaScript模块化开发 seajs(一)

    在使用seajs模块化开发之前,直接在页面引用js会容易出现冲突及依赖相关的问题,具体问题如下 问题1:多人开发脚本的时候容易产生冲突(比如全局参数冲突,方法名冲突),可以使用命名空间降低冲突,不能完 ...

  8. JavaScript模块化开发实例

    最近接触了一些JavaScript开发的例子,在这里与大家一起分享一下: 例子:当我们一个团队在写Js文件的时候,你一个人写的JS代码自己可以看懂也可以维护,但是别人想对你的JS进行扩展的话,如果都在 ...

  9. (转)详解JavaScript模块化开发

    https://segmentfault.com/a/1190000000733959 什么是模块化开发? 前端开发中,起初只要在script标签中嵌入几十上百行代码就能实现一些基本的交互效果,后来j ...

随机推荐

  1. SQL Server 2008 R2——T-SQL 存储过程 返回表

    ==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完 ...

  2. 描述Linux下软链接和硬链接的区别(计时2分钟)

    在linux系统中,链接分两种 :一种被称为硬链接(Hard Link),另一种被称为符号链接或软链接(Symbolic Link). 1)默认不带参数情况下,ln命令创建的是硬链接. 2)硬链接文件 ...

  3. jmeter 性能测试 JDBC Request (查询数据库获取数据库数据) 的使用

    JDBC Request 这个Sampler可以向数据库发送一个jdbc请求(sql语句),并获取返回的数据库数据进行操作.它经常需要和JDBC Connection Configuration配置原 ...

  4. linux线程同步(3)-读写锁

    一.概述                                                    读写锁与互斥量的功能类似,对临界区的共享资源进行保护!互斥量一次只让一个线程进入临界区, ...

  5. Hadoop多硬盘配置时的注意事项

    <!-- hdfs-site.xml --> <property> <name>dfs.datanode.fsdataset.volume.choosing.pol ...

  6. Windows Azure支持七层负载均衡--Application Gateway

    一直以来Windows Azure的负载均衡(Loadbalancer)功能一直被客户诟病,无法其竞争对手(特别是国内的云厂商)匹敌. Windows Azure的负载均衡器是四层的,前期的版本不支持 ...

  7. 【转载】SweetAlert2 使用

    SweetAlert2是一款功能强大的纯Js模态消息对话框插件.SweetAlert2用于替代浏览器默认的弹出对话框,它提供各种参数和方法,支持嵌入图片,背景,HTML标签等,并提供5种内置的情景类, ...

  8. CF721C. Journey[DP DAG]

    C. Journey time limit per test 3 seconds memory limit per test 256 megabytes input standard input ou ...

  9. POJ1837 Balance[分组背包]

    Balance Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 13717   Accepted: 8616 Descript ...

  10. 面试题:return和finally执行

    Demo类: public class Demo { public int get() { int x=1; try { x++; return x; }finally{ ++x; } } } Tes ...