JavaScript的包的概念评价

我有一个Web应用程序的一个新的JavaScript建筑风格的想法,我希望有人在这里能帮助我割肉出来,并想通过它。

我有多个Web应用程序项目中的JavaScript的使用量是很大的 - 特别是在使用框架,如jQuery的,ExtJS的,的OpenLayers等。所有这些框架显然提供了一个简单的单行办法,包括他们使用的特定页面。

但是,我总是最后写极大量的JavaScript为webapp的自己。 我喜欢让事情变得层次分明。 我使用一个命名空间的架构,看起来是这样的:

WebAppName.category.pageName.method = function() { ... }

...或者类似的东西。 因此,举例来说,如果我为建设一个名为“JSMapper”Web应用程序的管理页面效用函数就应该是这样的:

JSMapper.util.administration.someMethod = function() { ... }

使用这种结构不断事情,但加入数十座的方法后,一个JavaScript文件会变得冗长得可笑的,即使它划分成不同的页面不同的文件(例如administration.js将持有的所有JSMapper.xxx.administration功能或东西)。

所以,我想出了一个PHP脚本,让我每一个JavaScript方法分成自己的文件,并使用目录结构来规范一切是如何定义的。 因此,在本质上,我可以把这个目录结构:

JSMapper |-index.php |-scripts | |-JSMapper | | |-repository | | | |-administration | | | | |-someRepositoryMethod.js | | |-util | | | |-administration | | | | |-someMethod.js | | | | |-someOtherMethod.js | | | |-aGeneralUtilityMethod.js |-treescript | |-treescript.php

...并包括了一个参数treescript.php文件<script>标记:

<script type='text/javascript' src='treescript/treescript.php?package=JSMapper'></script>

PHP脚本出去,并得到所有文件,定义了基于目录结构的命名空间,并给我要求的所有文件的内容:

if(typeof window.JSMapper == "undefined") JSMapper = {}; if(typeof JSMapper.util == "undefined") JSMapper.util = {}; if(typeof JSMapper.util.administration == "undefined") JSMapper.util.administration = {}; JSMapper.util.admin.someMethod = function() { // do something }; JSMapper.util.admin.someOtherMethod = function() { // do something else }; JSMapper.util.aGeneralUtilityMethod = function() { // this method is not specific to the administration page }; if(typeof JSMapper.repository == "undefined") JSMapper.repository = {}; if(typeof JSMapper.repository.administration == "undefined") JSMapper.repository.administration = {}; JSMapper.repository.admin.someRepositoryMethod = function() { // do something };

它也可以采取分装作为一个参数,比如JSMapper.util ,它将只检索从分装的方法。

我已经开始成功地使用这种方法的一个项目,它是非常好的事组织到包我所有的JavaScript和我的每个命名空间中的所有方法都是按字母顺序排列,易于查找和管理。



所以我的问题是这样的:这是一个切实可行的办法? 它是适用于企业级Web开发? 任何缺点我俯瞰? 任何想法,意见,可选择的解决方案是受欢迎的。 我可以根据要求提供的PHP脚本文件。 谢谢。

--------------解决方案-------------

总的想法是一个合理的,但滚动您自己的图书馆和包装方案可能是错误的举动。 你看RequireJS? 它实现了CommonJS的AMD规范。 至少,看看相关CommonJS的规格:模块和包。

分类:JavaScript的 时间:2015-03-14 人气:0
本文关键词: JavaScript的,建筑,包装
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 2.346 (s). 10 q(s)