如何在设置后将 Express.js 用于新的 Web 应用
How do I use Express.js for a new web app after setup?
我已经为hello world应用程序安装了Express,并且运行良好。现在我想创建一个新应用程序,我怎样才能为该新应用程序使用已安装的 Express,而不是为该新应用程序重新安装它: npm install express
还是每次创建新应用程序时都必须从互联网重新安装它?
npm install express
。将仅将 Express 安装到终端中的当前文件夹路径中。如果要为所有 Node.js 实例安装包,则需要运行:
npm -g install express
或者,根据服务器的安全模型,
sudo npm -g install express
有时,如果链接失败,则需要链接包(您将收到"找不到模块 X"错误(,如下所示:
sudo npm link express
如果你想阅读更多关于它的信息,这篇博文是一个很好的阅读。
使用 npm install -g express
但是值得将 express 添加到您的 package.json 中以及您需要的其余(未来(依赖项,因此您可以在项目的根目录中键入 npm install,它将自动安装具有指定版本的所有依赖项,依此类推。
不要全局安装 Express
在本地安装您将要依赖的任何软件包通常被认为是 Nodejs 社区中的最佳实践。它归结为管理依赖项。
请参阅:Nodejs 博客 - NPM 1.0:全局与本地安装
请考虑以下方案:
假设您为第一个项目执行了 Express 的全局安装。您开始使用最新版本的库,一切顺利。然后随着时间的推移,您再编写 10 个依赖于该安装的应用程序。最终,Express推出了下一个主要版本,并添加了一些杀手级功能,但他们也引入了一些向后不兼容的API更改。您需要为新项目使用最新版本,但全局更新可能会破坏您以前创建的所有应用程序。
在最好的情况下,您将对所有旧项目进行 100% 的测试覆盖,通过努力工作和决心,您最终将设法更新/修复更新中断的所有内容。
实际上,没有人对所有内容都有 100% 的测试覆盖率,并且很可能会错过更新中断的内容并意外地推送到生产中。 ::畏缩::
我刚才概述的场景是很多人所说的依赖地狱。这是某些组织被锁定在框架/应用程序/dll 的特定版本中的常见原因。
使用 nodejs,为每个项目单独处理依赖项既便宜又容易。模块通常不像你期望的其他语言的框架那样单一(阅读巨大(。
要使用依赖项在本地安装 Express,只需使用:
npm install express --save
注意:--save 标志会自动将 Express 和版本号添加到您的 package.json 文件中。如果您希望将模块标记为 devDependencies 列表,请使用 --save-dev 标志。
规则的例外情况:
"不在本地安装"规则的例外情况是 CLI 应用程序。很少有人会编写依赖于 CLI 应用程序的代码,即使他们这样做了,CLI 应用程序也只是表面上公开最高阶函数。除非 CLI 具有项目所依赖的开发 API,否则全局安装包可能更安全且更方便。
旁白:库开发人员的观点
随着库的更新和改进,库开发人员在主要版本(例如 1.0、2.0、3.0(之间更改 API 的情况并不少见,因为他们对一切应该如何构建有了更好的感觉。当引入向后不兼容的更改时,人们会指责并开始争论"糟糕的设计"的情况并不少见。这些问题中的大多数与所使用的库的设计无关。相反,它们是实现它们的开发人员设计和版本管理不佳的原因。
事情的真相是,在大部分代码已经被更大的社区实现并投入使用之前,不可能预见到库的最佳设计。最好的项目是那些有机增长的项目,拥有庞大的用户群,提供大量有价值的反馈,并随着时间的推移适应用户的需求。
对于库开发人员来说,主要版本通常是最激动人心的时刻,因为这是我们真正发布突破性更改的地方。介于两者之间的所有版本仅用于无聊的维护和错误修复。
Nodejs 的最大好处之一是它的核心很小。Javascript语言本身定义良好,因此对核心的更新几乎没有机会破坏任何代码。Nodejs 的第二大好处是包管理器和通用的 package.json 项目文件格式使管理依赖版本尽可能简单明了。
来源:我开发库,并花费大量时间思考好的 API 设计。
- Firebase updateChildValues适用于IOS,但不适用于Web和Android
- 如何将quickblox用于web
- 适用于 Web 应用程序的可用键盘快捷键
- 用于Web应用程序中网络表示的图形数据库
- 开始使用 Spotify API(适用于 Web App)
- 用于 Web 浏览器上可拖动对象的 Javascript 框架
- Javascript(不适用于Web)需要替换所有有问题的字符
- 用于Web和移动设备的HTML5框架(LAMP)
- 用于Web开发的iOS Touch ID
- 用于Web信息图形的Javascript Modal
- 用于Web的开源图形框架
- 用于Web应用程序的HTML5画布视口
- 如何在POST方法之后将更改应用于web
- 苹果取消了直播shoutcast&ios 6上的icecast仅适用于web应用程序
- 帐户套件(用于Web)服务器错误-我们遇到了一个错误
- 用于web的图表编辑器/设计器/向导组件
- 如何捕获终身合金UI验证错误以用于web分析
- 用于web应用程序的服务器端AI
- 用于Web应用程序开发的IDE,使本地代码和服务器代码保持同步
- 为什么 cocos2d-js + 花栗鼠,仅适用于 web 构建