目录
一、nodejs基础
1、认识nodejs
* nodejs是一个javascript运行环境,它让javascript可以开发后端程序,实现几乎其他后端
语言实现的所有功能,可以与php、java、python、.net、ruby等后端语言平起平坐
* nodejs是基于v8引擎,v8是google发布的开源javascript引擎,本身就是用于chrome浏览器
的js解释部分,但是ryan dahl这哥们,鬼才般的,把这个v8搬到了服务器上,用于做服务器的软件
2、nodejs的特性
* nodejs语法完全是js语法,只要你懂js基础就可以学会nodejs后端开发
* nodejs超强的高并发能力,实现高性能服务器
* 开发周期短、开发成本低、学习成本低
3、使用nodejs需要了解多少javascript
* http://nodejs.cn/learn/how-much-javascript-do-you-need-to-know-to-use-nodejs
4、浏览器环境vs node环境
* chrome浏览器
- html/css - javascript
- blink - v8
- 中间层
- 操作系统(网卡/硬盘/显卡...)
* node
- javascript
- v8
- 中间层(libuv)
- 操作系统(网卡/硬盘/显卡...)
* nodejs可以解析js代码(没有浏览器安全级别的限制)提供很多系统级别的api,如:
- 文件的读写(file system)
########
const fs = require("fs")
fs.readFile("./ajax.png", "utf-8", (err, content) => {
console.log(content)
})
########
- 进程的管理(process)
########
function main(argv) {
console.log(argv)
}
main(process.argv.slice(2))
########
- 网络通信(http/https)
########
const http = require("http")
http.createServer((req, res) => {
res.writeHead(200, {
"content-type": "text/plain"
})
res.write("hello nodejs")
res.end()
}).listen(3000)
########
5、开发环境搭建
* http://nodejs.cn/download/
二、模块、包、commonjs
1、为什么要有模块化开发
* 依赖关系 - 命名空间 - 代码组织
* 纠结的编程体验
* 定义 - 暴露接口 - 引用
2、commonjs规范
* modules、binary、packages、console、system、encodings、filesystems、sockets
* nodejs/webpack(部分实现规范)
3、modules模块化规范写法
* 我们可以把公共的功能抽离成为一个单独的js文件作为一个模块,默认情况下面这个模块里面的方法或者属性,
外面是没法访问的。如果要让外部可以访问模块里面的方法或者属性,就必须在模块里面通过exports或者
module.exports暴露属性或者方法。
########
// m1.js
const name = "gp19"
const sayName = () => {
console.log(name)
}
console.log("module 1")
// 接口暴露方法一:
module.exports = {
say: sayName
}
// 接口暴露方法二:
exports.say = sayName
/*
// 错误!
exports = {
say: sayName
}
*/
########
########
// main.js
const m1 = require("./m1")
m1.say()
########
三、npm&yarn
1、npm的使用
npm init
npm install 包名 -g(uninstall、update)
npm install 包名 --save-dev(uninstall、update)
npm list -g(不加-g,列举当前目录下的安装包)
npm info 包名(详细信息) npm info 包名 version(获取最新版本)
npm install md5@1(安装指定版本)
npm outdated(检查包是否已经过时)
########
"dependencies": {"md5": "^2.1.0"}:^表示如果直接npm install将会安md5 2.*.*最新版本
"dependencies": {"md5": "~2.1.0"}:~表示如果直接npm install将会安装md5 2.1.*最新版本
"dependencies": {"md5": "*"}:*表示如果直接npm install将会安装md5最新版本
########
2、全局安装nrm
* nrm(npm registry manager)是npm的镜像源管理工具,有时候国外资源太慢,使用这个就可以快速地在
npm源间切换
* 手动切换方法:npm config set registry https://registry.npm.taobao.org
* 安装nrm:在命令行执行命令,npm install -g nrm,全局安装nrm
* 使用nrm:执行命令nrm ls查看可选的源。其中,带*的是当前使用的源,上面的输出表明当前源是官方源
* 切换nrm:如果要切换到taobao源,执行命令nrm use taobao
* 测试速度:你还可以通过nrm test测试相应源的响应时间
- nrm test
* 扩展:中国npm镜像,这是一个完整npmjs.org镜像,你可以用此代替官方版本(只读),同步频率目前为10分钟
一次以保证尽量与官方服务同步。
- npm install -g cnpm --registry=https://registry.npmmirror.com
3、yarn使用
* npm install -g yarn
* 对比npm:
- 速度超快:yarn缓存了每个下载过的包,所以每次使用时无需重复下载。同时利用并行下载以最大
化资源利用率,因此安装速度更快。
- 超级安全:在执行代码之前,yarn会通过算法校验每个安装包的完整性
* 开始新项目
- yarn init
*添加依赖包
- yarn add [package]
- yarn add [package]@[version]
- yarn add [package] --dev
* 升级依赖包
- yarn upgrade [package]@[version]
* 移除依赖包
- yarn remove [package]
* 安装项目的全部依赖
- yarn install
四、内置模块
1、http模块
// 要使用http服务器和客户端,则必须require("http")
const http = require("http")
// 创建本地服务器来从其接收数据
const server = http.createServer((req, res) => {
res.writeHead(200, {"Content-Type": "application/json"})
res.end(JSON.stringify({
data: "Hello World!"
}))
})
server.listen(8000)
const http = require("http")
// 创建本地服务器来从其接收数据
const server = http.createServer()
// 监听请求事件
server.on("request", (req, res) => {
res.writeHead(200, {"Content-Type": "application/json"})
res.end(JSON.stringify({
data: "你好世界!"
}))
})
server.listen(8000)
2、url模块
标签:npm,########,http,nrm,nodejs,高级,yarn,第一章
From: https://www.cnblogs.com/linding/p/17139353.html