Node.js是什么?

Node.js是开源的Javascript,它允许用户从服务器端运行脚本。它在用户的Web浏览器中加载之前动态生成网页。因此,Node.js已经成为一个基础,它允许Web应用程序开发统一单个平台的代码。

概观

Node.js允许使用javascript来创建Web服务器和网络工具。Node.js应用程序可以在许多服务器上运行,例如Linux,Microsoft Windows和任何其他可以编译为javascript的服务器。Node.js中的函数被设计为非阻塞,这是PHP和Node.js之间的主要区别。

为PHP Web开发安装Node.js.

查看Microsoft Windows和Ubuntu上Node.js安装的详细指南。

Node.js Gurus的启示

要成为PHP开发领域的最佳Node.js开发人员,您肯定需要了解Node.js的最佳实践。这篇文章将进一步帮助您将Node.js技能提升到新的水平。

Node.js PHP Web开发的最佳实践1.新项目 – 使用npm脚本

当你可以用npm脚本和Node安排它们时,停止编写bash脚本。EG,npm运行构建,启动和测试Npm脚本就像Node开发新项目时的一个实际来源。

考虑到npm脚本具有前后挂钩,您可以获得非常复杂的自动化级别:

"scripts": {"preinstall": "node prepare.js","postintall": "node clean.js","build": "webpack","postbuild": "node index.js","postversion": "npm publish"}
2.确保安全 – 使用env Vars

通过使用env vars,即使在项目的早期阶段也能确保敏感数据的安全性。此外,一些库和框架将引入像NODE_ENV这样的信息来修改它们的行为。将其设置为生产。同时设置MONGO_URI和API_KEY值。您可以创建一个shell文件(例如start.sh)并将其添加到.gitignore

NODE_ENV=production MONGO_URL=mongo://localhost:27017/accounts API_KEY=lolz nodemon index.jsNodemon also has a config file where you can put your env vars (example):{"env": {"NODE_ENV": "production","MONGO_URL": "mongo://localhost:27017/accounts"}}
3.快速而精彩的Node.js – 事件循环

功能强大且智能的事件循环使Node.js如此快速和出色。在没有事件循环的情况下等待输入和输出任务完成后浪费的时间。

如果您需要执行CPU密集型操作(例如,计算,密码散列或压缩),那么除了为这些CPU任务创建新进程外,您可能还想探索使用setImmediate()延迟任务的时间或setTimeout() – 其回调中的代码将在下一个事件循环周期继续。nextTick()与名称相反的工作循环。

4.良好的文档 – 良好的命名约定

Gurus一直都说在你的知识中使用最好的名称约定。因为好的名字可以作为一个很好的文档。

同样,文件名必须正确反映内部代码的用途。如果您查看Node(GitHub链接)的lib文件夹,其中包含与该平台捆绑在一起的所有核心模块,那么您将看到文件/模块的明确命名(即使您对所有核心模块不是很熟悉) ):

events.js 
fs.js 
http.js 
https.js 
module.js 
net.js 
os.js 
path.js 
process.js 
punycode.js 
querystring.js

内部模块标有下划线(_debugger.js,_http_agent.js,_http_client.js),就像代码中的方法和变量一样。这有助于警告开发人员这是一个内部接口,如果您正在使用它,您可以自己做 – 如果它被重构甚至删除,请不要抱怨。

5.不要使用Javascript

即使使用ES6和ES2016 / ES7添加的两个功能,JavaScript仍然有其怪癖。

你只需要几个宏(宏可以让你构建你想要的语言),而不是一个全新的语言,然后考虑Sweet.js就可以做到这一点 – 允许你编写生成代码的代码。

6.集群Web应用程序

由于节点运行时仅限于单个CPU核心并且大约有1.5 GB,因此在大型服务器上部署非群集节点应用程序会极大地浪费资源。

要获得超过1.5 GB的多核心,请在您的应用中加入群集支持。假设您现在正在使用小型硬件上的单个系统,Cluster为您提供了未来的灵活性。

测试是检查应用程序的最佳群集进程数量的最佳选择,但最好是在平台的帮助下提供合理的默认值,并提供简单的回退,例如:

const CONCURRENCY = process.env.WEB_CONCURRENCY || 1;

7.Git主要位

大多数应用程序都包含必不可少的记录和生成的记录。当使用像git这样的源代码控制系统时,必须阻止监视生成的内容。

例如,您的节点应用程序通常具有一个用于依赖项的node_modules目录,您应该将其保存在git之外。

只要每个依赖项都列在包deal.Json中,任何人都可以使用jogging npm install创建应用程序的工作邻域复制 – 以及node_modules。

跟踪生成的记录会导致git历史过去不必要的噪音和膨胀。更糟糕的是,鉴于某些依赖项是原生的并且应该被编译,检查它们会使您的应用程序变得不那么可移动,因为您将仅从单个且可能不适合的架构提供构建。

出于同样的原因,您不应该在bower_components或grunt构建的编译属性中确定。

如果你不小心检查了node_modules,那没关系。你可以这样拿掉它:

echo'node_modules'> .Gitignoregit rm -r --cached node_modulesgit commit -am'ignore node_modules'

还要忽略npm的日志,以免它们混乱我的代码:

echo'npm-debug.Log'> .Gitignoregit commit -am'igno npm-debug'

通过忽略这些无用的记录,您的存储库可能会更小,您的提交可能更容易,并且您将阻止生成的目录中的合并冲突。

结论:

最好的方法是熟悉Node.js并掌握基础知识。现在,通过学习正确的方法来研究代码。是的,如果你有一些很好的知识可以分享这个,请不要犹豫,将你的想法放在下面的评论框中。