node.js基本概念
1、动态网页 和 静态网页
动态网页:数据可以进行交互 动态改变数据
2、node
node是基于chrome的V8引擎的Javscript运行环境
node中的npm 是全球最大的包管理器 (全球最大的垃圾网站)
node中的事件机制以及非阻塞式的I/O式模型 使其轻量又高效
I:input
o:output
3、v8引擎:
浏览器内核
引擎
渲染引擎
脚本引擎
4、node中是没有DOM 和BOM的概念的
5、node的版本
LTS 稳定版本:
10.15.2(10是大版本号,15是小版本号,2是补丁)
6、nodeJS和 浏览器中的JAVAscript 有什么不同?
①在node中没有DOM和BOM的概念 因此不会涉及到兼容
②node中的global process这些属性都是浏览器没有的
③node可以用来搭建服务器,数据库
④node可以用来调用底层的API 可以做文件的读写等操作
7、node优点
优点:高效 速度快 适合做高并发的项目
缺点:不适合做大量计算的项目
8、node的交互模式
node 回车进入交互模式
退出:
ctrl+c 2次
或者 ctrl+d 一次
9、node如何运行js文件
node.js文件名
10、模块化
requireJs seaJS CommonJS ES6 module
异步 异步 同步 同步
AMD CMD common import
模块化规范?
如何导出模块 如何接收模块:
define定义 return导出 require接收(requireJs )
module.exports 导出 require 导入(commonJS)
export default 导出 import 导入 (ES6 module)
11、node中的模块分为以下三种
①核心模块
②自定义模块
③第三方模块
12、(注意:<>不需要写)
npm
cnpm install package.json依赖安装
cnpm install <包名> -g 全局安装
cnpm install <包名> --save-dev 局部安装 cnpm i <包名> -S
cnpm uninstall <包名> 卸载
cnpm update <包名> 更新
cnpm clear cache 清除缓存
13、
①npm init 创建node的包 保证包名全网唯一
②npm login
③npm publish 上传 上传到npm官网
14、yarn
①缓存
②异步
cnpm install jquery qs url -S(加载jquery qs url为同步:按顺序执行)
yarn add jquery qs url(加载jquery qs url为异步:同时分开执行)
cnpm install yarn -g 全局安装
yarn install === cnpm install package.json依赖安装
yarn add <包名> === cnpm install <包名> -S 局部安装
yarn add <包名> --dev == cnpm install <包名> --save-dev 局部安装
yarn upgrade <包名> 更新
yarn remove <包名> 删除
//引入http模块 node的核心模块 const http = require("http"); /* //商场 const server = http.createServer() 创建服务器 //端口号 server.listen(9000) 用户说:"商店里面有没有澡巾" url:"http://ww.baidu.com/data" 人民币 get post 要绿色 多大号的 headers:{ "content-type":"application/json"{name:val,pass:val} "application/x-www-form-urlencoded" 表单序列化 name=val&pass=val "{'name':'zhangsan','age':19}" } 回复 res.end() + res.write 最后的回复 res.write(); 响应 content-tyepe */
http.createServer((req,res)=>{ console.log(req.headers) /* req:request req.url 请求的地址 req.method 请求的方式 req.headers 请求头 req.body 接收post传递的参数 req.query 接收get传递过来的参数 req.request() 接收任意方式传递过来的数据 res:response res.write() 回复响应信息 可以调用很多次 res.end() 回复响应信息 做结尾 只能调用一次 res.statusCode 设置状态码 res.setheader() 设置响应头 res.writeHead(); statusCode 与setHeader的综合写法 第一次参数是状态码 第二次参数是响应头的类型 */ //res.statusCode = 200; //res.setHeader("content-type","text/plain"); res.writeHead(200,{"content-type":"text/plain;charset=utf8"}); res.write("1111"); res.write("2222"); res.end("你好"); }).listen(9000) //提示信息 console.log("http://localhost:9000") /* 响应头的类型有哪些? text/plain 文本类型 text/html html类型 text/css css类型 application/x-javascript js类型 application/json json类型 application/xml xml类型 image/png jpg gif */
小案例:
moduleA.js
const moduleA = require("./moduleB"); const cheerio = require("cheerio"); console.log(moduleA._name); console.log(moduleA.fn("哈哈"))
moduleB.js
let _name = "张三"; let fn = (name)=>{ console.log(name); } module.exports = { _name, fn }