在AngularJS和Nodejs之间共享代码
使用javascript
在前端和后端之间共享代码的最佳方式是什么,特别是在nodejs
和angularjs
之间nodejs
angularjs
?
事情是我们在后端和前端使用相同的enums
和constant values
,如error codes
。 现在我们只是将每个更改复制到两个平台,这不是一个好的解决scheme。 还有一些可以共享的服务。
我见过像browserify
这样的图书馆; 但那不是我正在寻找的。 我正在寻找类似于java
maven dependency
的解决scheme。 在java
,库可以使用maven
轻松共享,而我无法在javascript
find类似的方法。 有没有办法孤立这些服务,并将它们作为独立的使用nodejs
使用npm
和angularjs
依赖于nodejs
? 或者在前端和后端之间共享相同的代码的方式是什么?
有几种方法可以做到这一点。 首先是你可以制作一个新的包,这个包需要通过bower来获得前端代码,通过npm来获得后端代码。 我有几个包发布到这两个系统。
使用Bower安装 – 有关如何安装不在registry中的模块的信息
NPM安装文档 – 使用npm(私人github,auth: git+ssh://git@github.com/[org]/[repo]
)安装的所有方法
只需使用共享数据创build一个新模块,然后使用软件包pipe理器进行安装。 他们都允许你安装一个未发布的模块,所以如果它是私人数据,你可以保持这样的。
如果你的前端需要require.js
你可以使用像amdefine
这样的amdefine
来使你的节点后端可用,或者如果你只是使用传统的窗口代码,你可以做如下的事情:
var mydata = {}; if(typeof window !== 'undefined'){ window.mydata = mydata; } else { module.exports = mydata; }
如果您要共享大量数据,我强烈build议您浏览browserify,以commonjs编写整个代码库,然后使用browserify生成客户端软件包。 有关于使用browserify 的资源清单 ,包括如何使用browserify和angular度在一起的东西
免责声明 – 我仍在开发这种方法,这是一个小手册。 我用npm做了这个,叫做pac的npm cli,还有凉亭。 Pac让我避免在生产中使用npm install
,方法是将模块保存为.tgz文件(提交到源代码pipe理项目)。 用pac,当有人签出节点项目时,他们运行pac install
然后npm rebuild
而不是npm install
。
我的共享代码保存在一个目录(我的模块)。 它有package.json和一个bower.json。
我的消费节点应用程序有一个package.json依赖项:“my-module”:“xyz”
我的客户端具有bower.json依赖关系:“my-module”:“../relative/path/to/my-module”
当我更新我的模块时,我通过以下方式更新我的节点应用程序:
- 制作my-module内容的tar.gz:
tar -czvf my-module.tar.gz -C my-module
- 从节点应用程序的node_modules中删除旧版本
- 重新运行
npm install path/to/my-module-tar.gz
- 重新运行pac(这使得node_modules / my-module的.tgz)
- 提交更新的pac .modules / my-module.tgz
我更新我的客户:
- 删除旧的客户端/ bower_components / my-module
- 重新运行
bower install
或bower update
- 无法用Express + jade + angular查找视图
- Grunt连接任务和中间件Access-Control-Allow-Origin
- Angular.JS:由于以下原因无法实例化模块路由:错误:$ injector:nomod模块“路由”不可用
- Express和AngularJS – 尝试打开主页时,网页会冻结
- 从AngularJS客户端发送POST表单数据到Express / Node.js服务器
- 同构的应用程序没有拆分视图
- 无法加载转播器
- 获取TypeError:无法在mysql node.js中调用null的方法'releaseConnection'
- 发布请求中的负载在node.js函数中不可用