Node.js 知识要点

Node.js

简要介绍

Node.js 是一个基于 Chrome's V8 JavaScript engine 的 JavaScript 运行环境(Runtime) 。通过这个运行环境 ,可以让 JavaScript 像后端语言(Java, Python 之类)那样,进行文件,数据库等操作。

Node.js 产生的初衷,是 Ryan Dahl 想设计一高性能的 Web 服务器。他发现高性能 Web 服务器有几个要点:事件驱动,非阻塞I/O。以此,Ryan Dahl 设计了 Node.js。

安装

Nodejs 官网 下载并安装。

运行

  • 进入命令交互模式(输入一条代码语句后立即执行并显示结果):命令行输入 node
  • 运行一个 js 文件:命令行中, cd 文件所在位置,然后输入 node 文件名

JavaScript

能熟练使用 JavaScript。学习 JavaScript 可以访问阮一峰老师的 JavaScript 标准参考教程(alpha)

模块

每一个文件就是一个模块,而文件路径就是模块名。Node.js的模块系统,就是参照 CommonJS 规范实现的。

导出模块

导出当前模块的一些公有方法和属性,用 module.exports,如

module.exports = {
    foo: 'foo',
    fn: function(){}
}

引入该模块的程序就可以调用这些属性和方法。

引入模块

使用 requrie 模块名, 如

var foo1 = require('./foo');
var _ = require('underscore');

关于模块路径解析及文件定位规则见这里

复杂些的模块由多个子模块组成。为了便于管理和使用,我们可以把由多个子模块组成的大模块称做包,并把所有子模块放在同一个目录里。

包的目录结构

完全符合 CommonJS 规范的包的目录结构应该包括

  • package.json 包的描述文件
  • lib 放JS代码
  • bin 放二进制
  • doc 文档
  • test 测试代码

当然上面的结构是一个推荐。实际开发中的包的目录结构可能和那这目录不太一样。

package.json

包的描述文件。其内容形如

{
  "name": "node-js-sample",
  "version": "0.2.0",
  "description": "A sample Node.js app using Express 4",
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "dependencies": {
    "express": "^4.13.3"
  },
  "engines": {
    "node": "4.0.0"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/heroku/node-js-sample"
  },
  "keywords": [
    "node",
    "heroku",
    "express"
  ],
  "author": "Mark Pundsack",
  "contributors": [
    "Zeke Sikelianos <zeke@sikelianos.com> (http://zeke.sikelianos.com)"
  ],
  "license": "MIT"
}

关于字段的描述见 这里

关于版本(version)的设置,推荐遵循语义化版本

我们在包的根路径执行 npm init,可生成 package.json。

npm

npm 是 Node.js 的包管理工具。安装 Node.js 后,其实也附带着安装了 npm。常用命令

  • npm install [-g] [包名]:安装某第三方包。若未输入包名,则根据当前目录的 package.json 来安装依赖。
  • npm uninstall [-g] 包名:卸载某第三方包
  • npm update [-g] 包名:更新某第三方包
  • npm search 包名:搜索某第三方包
  • npm help 命令:查看某条命令的详细帮助

更多 npm 知识见这里

如果用 npm 安装第三方包的速度很慢,可以用国内淘宝的镜像 cnpm

API

Node.js 提供来丰富的api。几个主要的

所有 api 的文档见这里

异步编程

介绍见这里。关于异步控制的方案见这里

用 Node.js 来做网站

虽然不依赖任何框架,用 Node.js 也能做出一个网站,但自己一定会重复造很多"轮子"。 Node.js 上的框架有很多,最流行的框架应该是 Express.js。这是一个易学,易用的轻量级的框架。其他的一些框架的比较,见这里

更多 Node.js 资源

参考


本文遵守创作共享CC BY-NC-SA 4.0协议 网络平台如需转载必须与本人联系确认。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏华章科技

怎样成为一个数据科学家:针对大学毕业生的指导

刚毕业的大学生们,恭喜你们!欢迎成为劳动者的一员。在你所有可能申请的工作中,“数据科学家”这个风骚无比的职位也许最难得到的一个,同时也许是最具有潜在丰厚回报的一...

9920
来自专栏码洞

看完Java的动态代理技术——Pythoner笑了

Java的动态代理常用来包装原始方法调用,用于增强或改写现有方法的逻辑,它在Java技术领域被广为使用,在阿里的Sofa RPC框架序列化中你能看到它的身影,H...

11430
来自专栏码洞

200行Java代码实现依赖注入框架

依赖注入框架并不神秘,其实它是非常简单的东西。不要去看spring的依赖注入源码,因为你只要一去看就意味着你再也写不敢下手自己撸了,它的功能因为过于强大,所以设...

11810
来自专栏Android机动车

转向Kotlin——对象

在Java中又匿名类的概念,也就是说,在创建类的时候,无需指定类的名字。匿名类一般用于方法参数。基本理念就是方法需要接收一个类或者接口的实例,而这个实例只是在该...

9830
来自专栏清风

Java FTP 上传文件 精简版 原

13720
来自专栏前端正义联盟

关于ajax学习笔记

只要这个属性值发生了变化,就会触发一个事件onreadystatechange事件,就可以使用xhr.onreadystatechange = function...

20220
来自专栏养码场

面对梦想,不妨从扎实自己技能开始

例如小扎。每年给自己定一个目标,已连续7年完成了自己新年计划,例如2010年励志学好普通话;2012年回归每天写代码的日子;2014年每天写一封经过谨慎思考后的...

9830
来自专栏aoho求索

基于可靠消息方案的分布式事务(三):Lottor使用

前面两篇文章介绍了笔者关于可靠消息方案的分布式事务的实现思路以及Java中的事务概念,奈何工作抽不出时间,如今时隔已久,分布式事务系列拖了很久,一直没能好好把项...

10610
来自专栏清风

Linux 安装 JDK 原

9820
来自专栏LIN_ZONE

jsp 自定义标签解决jsp页面中int时间戳的时间格式化问题

之前在项目中根据需求,需要自定义标签,经过查询w3c文档,自己也踩了一些坑,特此记录自定义标签的步骤,下面就以我之前的一个例子中的定义一个时间转换标签为例:gi...

10220

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励