1 安装
安装
sudo apt install nodejs
sudo apt install npm
查看版本
npm -v
升级
执行
npm init
、npm install
之前先升级,不然容易出错。
npm install -g npm
2 使用
2.1 包
包的概念
package(nodejs) = project(django)
准备目录
需要自行创建根目录,并进入
否则 nodejs 会把当前目录当成根目录
你显然不想让它把 home 目录搞得乱七八糟
mkdir learn-nodejs
cd learn-nodejs
创建包
在当前目录生成 package.json、node_modules
npm init
填写的信息
test conmand :测试命令
repository :github库
keywords : github库的密码
其他信息从略
发布包
工作完成后,把文件推送到github仓库
npm publish # 发布
npm unpublish <package>@<version> # 撤销发布
2.2 模块
本地安装
在当前项目的 node_modules 子路径下安装
npm install express
全局安装
在当前 nodejs 的安装路径下安装
npm install -g express
全局安装 & 本地安装
全局安装用于命令行,本机使用
本地安装用于项目,随项目发布
我装nodejs干嘛来?当然是做项目,那就本地安装
发布前要在本地测试,那就全局安装
命令默认是本地,加个-g
变成全局
查看安装列表
全局
npm list -g
全局以及本地
npm list grunt
其他命令
卸载模块
npm uninstall express
更新模块
npm update express
搜索模块
npm search express
清空缓存
npm cache clear
2.3 package.json
name - 包名。
version - 包的版本号。
description - 包的描述。
homepage - 包的官网 url 。
author - 包的作者姓名。
contributors - 包的其他贡献者姓名。
dependencies - 依赖包列表。如果依赖包没有安装,npm 会自动将依赖包安装在 node_module 目录下。
repository - 包代码存放的地方的类型,可以是 git 或 svn,git 可在 Github 上。
main - 指定程序的主入口文件,require(‘moduleName’) 就会加载它。默认值是根目录下面的 index.js。
keywords - 关键字
2.4 版本号
NPM使用语义版本号来管理代码。
语义版本号构成:X.Y.Z
X:主版本号,Y:次版本号,Z:补丁版本号。
当代码变更时,版本号按以下原则更新。
如果只是修复bug,需要更新Z位。
如果是新增了功能,但是向下兼容,需要更新Y位。
如果有大变动,向下不兼容,需要更新X位。
申明第三方包依赖时,除了可依赖于一个固定版本号外,还可依赖于某个范围的版本号。
例如"argv": "0.0.x"
表示依赖于0.0.x系列的最新版argv。
3 HelloWorld
创建包
mkdir learn-nodejs
cd learn-nodejs
npm init
创建文件
vim helloworld.js
输入内容
var http = require('http');
http.createServer(function (request, response) {
// 发送 HTTP 头部
// HTTP 状态值: 200 : OK
// 内容类型: text/plain
response.writeHead(200, {
'Content-Type': 'text/plain'});
// 发送响应数据 "Hello World"
response.end('Hello World\n');
}).listen(8080);
// 终端打印如下信息
console.log('Server running at http://127.0.0.1:8080/');
执行命令
node helloworl.js
用浏览器访问 http://127.0.0.1:8080/,显示Hello World。
4 使用Web模块
服务端
server.js
var http = require('http');
var fs = require('fs');
var url = require('url');
// 创建服务器
http.createServer( function (request, response) {
// 解析请求,包括文件名
var pathname = url.parse(request.url).pathname;
// 输出请求的文件名
console.log("Request for " + pathname + " received.");
// 从文件系统中读取请求的文件内容
fs.readFile(pathname.substr(1), function (err, data) {
if (err) {
console.log(err);
// HTTP 状态码: 404 : NOT FOUND
// Content Type: text/html
response.writeHead(404, {
'Content-Type': 'text/html'});
}else{
// HTTP 状态码: 200 : OK
// Content Type: text/html
response.writeHead(200, {
'Content-Type': 'text/html'});
// 响应文件内容
response.write(data.toString());
}
// 发送响应数据
response.end();
});
}).listen(8081);
// 控制台会输出以下信息
console.log('Server running at http://127.0.0.1:8081/');
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>