首页 > 技术文章 > node.js的一些知识

goweb 2016-05-01 00:57 原文

  • 什么是node.js

  1. node.js是构建于chrome浏览器v8引擎上的一个js运行环境
  2. 可以解析和执行js代码
  3. 可以当做另一种上下文,脱离浏览器环境(后端)运行js代码,而代码解析就是基于V8引擎
  4. 伴随着node.js有许多模块,提高效率。即node.js是一个运行环境,又是一个库
  5. node.js的 事件驱动和非阻塞IO模型使得node.js本身非常的轻量和高效
  • node.js的实现结构

  1. V8 JavaScript 解析执行引擎 ECMAScript
  2. 中间层 (提供了文件操作、网络操作登陆接口)更加接近操作系统的接口供开发人员使用
  3. 硬件层
  • node.js可以做什么

  1. 操作文件(创建、删除、修改、读取)
  2. 提供Web服务(在Node中可以接收客户端的请求了)
  3. Node 可以 开发一些 命令行工具软件
  4. Node 可以 开发动态网站(有用户业务交互的功能Web站点)
    • 用户登陆
    • 用户注册
    • 添加购物车
    • 商品的展示
  5. Node 可以帮我们 把之前 所写的 静态页面 -> 动态化
  6. Node.js 不需要操作DOM、BOM了,也不需要写HTML、css, 不需要考虑兼容性的问题
  7. Node.js 编程实际上就是在 写 JavaScript 代码,关心的是业务功能
  8. 操作持久化数据
  9. 可以开发 命令台 工具软件
  • node.js和PHP的区别

相同点:

  1. 它们都能操作文件,都有和操作系统底层打交道的 API
  2. 它们都可以进行网络操作,网络服务

不同点:

  1.  PHP 需要和 Apache 结合起来才能提供 Web服务
  2.  Node.js 摒弃了以往所有的服务器,Node.js 可以独立作为一个服务器来使用
  3. Java、PHP、.net 能做的事儿,Node.js 基本都能做,而且在某一方面比它们还要做的好
  • 安装包管理工具npm

  1. 允许用户从NPM服务器下载别人编写的三方包到本地使用
  2. 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用
  3. 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用
  • node.js模块加载规则,即:包的加载

当模块标识既不是文件模块,也不是核心模块的时候,

 Node.js按照一定的规则去查找该 包模块 先找当前的 node_modules 目录下有没有工具包(例如项目引用的node-markdown包),如果有,优先找 package.json 文件, 找到 package.json 文件之后,找 里面的 main 属性 如果 package.json 文件没有 或者 没有 main 属性 或者 main属性指定的文件模块不存在 Node.js 会取上一级目录下的 node_modules 目录下 找 该工具包继续走上面的流程 直到找到根目录下 如果还找不到那么就报错。正是因为有这种规则存在,require文件路径直接可以写成包的文件名。

  • 为了防止误删包之后,不清楚是缺少的文件模块、核心模块等等,这个时候就需要这个安装命令

npm install node-markdown --save

 那么package.json文件里对多出“depandencies”:{“node-markdown”:“^0.1.1”},

这个时候把包删掉,执行下面命令初始化package.json文件

npm init -y

再执行

npm install node-markdown --save

 那么文件中包会自动下载所缺少的包

 

  • 在这总结了一些npm常用命令

npm init 【-y】 初始化一个package.json文件

npm install 包名 安装一个包

npm install –save 包名 将安装的包添加到package.json的依赖 中(dependencies)

npm install –g 包名 安装一个命令行工具 npm docs 包名 查看包的文档【非常有用】

npm root -g 查看全局包安装路径

npm config set prefix “路径” 修改全局包安装路径

npm list 查看当前目录下安装的所有包

npm list -g 查看全局包的安装路径下所有的包

npm uninstall 包名 卸载当前目录下某个包

npm uninstall –g 包名 卸载全局安装路径下的某个包

npm update 包名 更新当前目录下某个包

 

 

 

 

 

 

 

 

 

推荐阅读