关于javascript模块化编程的疑惑

Janking 发布于 2014/08/18 12:01
阅读 560
收藏 2

华为云11月刊推送:DIY微信问答机器人,高性能计算代码的20个技巧!>>>

最近看了很多关于javascript模块化编程的解释,感觉都是针对web app的,目前我所知的有seaJS和requireJS,但是在我做的项目中,用起来有点别扭,100%肯定的是,我的用法不正确,所以想在此请教一下大牛们,帮我解决下面这个疑惑:

假设我现在有评论模块,上传头像模块,ajax表单模块,弹层模块,现有index.html和list.html两个页面,其中index.html需要上传头像模块和ajax表单模块,而list.html需要评论模块和弹层模块,这种情况,我该怎么引入相应的文件,可以拿seaJS或requireJS举例回答。

加载中
0
自由之信
自由之信

容我多说几句,呵呵,模块化编程,用requireJS,在某些场合,很烂,为什么?主要是,requireJS特别容易超时,然后js加载不出来。但是模块化编程确实很有效,当你写一个很复杂的javascript应用的时候,比如你有很多的类在里面,你如何写,用一个文件?相当的大,维护起来就困难,如果用多个文件,比如,你写一个在线编辑器,你有editor,你有ruler,你有grid,等等,很多的类,你可以用独立的js来写,editor.js, ruler.js, grid.js,然后用requreJS加载。但是,我一般的方法是用,node-minify来build,就是把editor.js + ruler.js + grid.js生成一个xxxxx.all.js,写代码的时候还是模块化的,只是在生成最终文件的时候,生成一个文件,我感觉比用requireJS好一点,不过requrieJS也有优势。实际上,对于简单的javascript的应用,不需要用requireJS。诚如你的问题,

// uploadicon.js
// class UploadIcon

function UploadIcon ()
{
    this.icon = xxxxxx;
}

UploadIcon.prototype.constructor = UploadIcon;
UploadIcon.prototype.upload = function () {

    .......
}

// ajaxlistview.js
// class Ajax ListView
function AjaxListView ()
{
    .....
}

....

// class List View Item
function ListViewItem ()
{
   ......
}

.....

// main.js

main ()
{
    .........

    requrie....
}




自由之信
自由之信
回复 @Janking : 按照@aiasfina的看法,应该是最终可以合并成一个dist来发布的,至于如何使用requireJS,你可以看看他的建议
Janking
Janking
回复 @自由之信 : 你说的有道理,但是上头有这个要求,并不是我能左右的,我在想,不同的页面引入不同的入口文件,那我岂不是要创建好多js文件出来? 对了,如果按照你说的,简单的项目,可以自己创建个class,但是我很多功能都引入插件,要融合会比较麻烦呀~
自由之信
自由之信
回复 @aiasfina : 了解了,虽然没用过,还是值得去看下~
aiasfina
aiasfina
回复 @自由之信 : 像 seajs, requirejs 这种模块化的库不可能不提供压缩合并的工具的,这是他们天生的优势 http://www.oschina.net/translate/optimize-requirejs-projects
自由之信
自由之信
回复 @aiasfina : 个人感觉如果你写一个库,或者是app,完全可以不用requirejs动态加载dependence的方式,生成一个js就可以了。
下一页
返回顶部
顶部