一、模块化
我们知道nodeJS是遵循CommonJS规范的,所以每个JS文件都是一个模块,模块的好处就是避免命名空间污染。倘若你想让一个模块对外暴露变量,可以用module.exports = varible;
var test = "我是test里面的字符串";
module.exports = {
test
}
而一个模块想要引用另一个模块对外暴露的变量,用require关键字就行了
var index = require("./test.js");
console.log(index.test);
这样test里面的变量就被index里面引用了
二、内置模块
1. http
创建一个HTTP服务器,监听HTTP客户端请求并返回响应。但是应用程序不直接与HTTP打交道,而是操作HTTP模块提供request和response对象。
request对象封装了HTTP请求,我们调用request对象的属性和方法就可以拿到所有HTTP请求的信息。
response对象封装了HTTP响应,我们操作response对象的方法,就可以把黄土坡响应返回给浏览器。
// 导入HTTP模块
var http = require("http");
// 创建HTTP server 并传入回调函数
var server = http.createServer(function (req,res) {
//设置浏览器的编码格式
res.setHeader("Content-type","text/html;charset=utf-8");
// 将HTTP响应的HTML内容写入到浏览器中
res.write("你好,世界");
res.end();
})
//让服务器监听8888端口
server.listen(8888);
在浏览器中输入localhost:8888就可以输出 “你好,世界”。
2. fs
该fs模块提供了一个API,用于以与标准POSIX功能紧密相关的方式与文件系统进行交互。
要使用这个模块:
const fs = require('fs');
所有的文件系统操作都有同步和异步的形式。
异步表单总是将完成回调作为最后一个参数。传递给完成回调的参数取决于方法,但第一个参数总是保留给一个异常。如果操作成功完成,那么第一个参数将是null或undefined。
3.url
解析URL、生成URL、以及拼接URL
var url = require("url");
var http = require("http");
var server = http.createServer(function (req,res) {
var pathname = url.parse(req.url,true);
console.log(pathname);
res.end();
})
server.listen(8888);
可以获取从前台地址栏传过来的URL链接
4.querystring
用于实现URL参数字符串与参数对象的互相转换
该querystring.escape()方法对给定的URL百分比编码str以针对URL查询字符串的特定需求而优化的方式执行 。
该querystring.escape()方法被使用querystring.stringify()并且通常不被直接使用。它的导出主要是为了允许应用程序代码通过分配querystring.escape一个替代函数来提供一个替换的百分比编码实现。
4. express
express 是Node.js应用最广泛的web框架
Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。
使用 Express 可以快速地搭建一个完整功能的网站。
Express 框架核心特性:
可以设置中间件来响应 HTTP 请求。
定义了路由表用于执行不同的 HTTP 请求动作。
可以通过向模板传递参数来动态渲染 HTML 页面。
5. cheerio
可以理解为一个Node.js版的jQuery,用来从网页中以css selector取数据,使用方式跟jQuery一样
首先就爱那个网页读取为一个字符串,传给cheerio.load函数,返回值即是一个cheerio对象(类似于jQuery对象)
var cheerio = require("cheerio");
function getData(str) {
var $ = cheerio.load(str);
var arr = $(".link-dark");
var dataTemp = [];
arr.each(function (k,v) {
// console.log($(v).text());
var title = $(v).text();
var obj = {
id:(k+1),
content:title,
}
dataTemp.push(obj);
})
// console.log(dataTemp);
return dataTemp;
}
6. util
是 node 里面一个工具模块 ,node 里面几乎所有的模块 都会用到 在这个模块
- 1 实现继承 这是主要功能
- 2 实现对象的完整输出
- 3 实现判断数据类型
//引入工具类
var util = require("util");
function Parent(){
//继承Parent函数内的内容 为内部继承
this.name = "爸爸";
this.age = "50";
this.sayHello = function(){
console.log("hello");
}
}
//继承Parent的外加属性 为外部继承
Parent.prototype.getName = function(){
console.log(this.name);
}
function Child(){
//不使用inherits实现继承
Parent.call(this);
}
//实现child继承parent
// 工具类 util 里面的inherits 只能继承原型链(prototype)的方法和属性,无法继承类自有(直接写在类里面的)的方法和属性
util.inherits(Child,Parent);
console.log(Child)