nodeJs使用教程

一、模块化

我们知道nodeJS是遵循CommonJS规范的,所以每个JS文件都是一个模块,模块的好处就是避免命名空间污染。倘若你想让一个模块对外暴露变量,可以用module.exports = varible;

var test = "我是test里面的字符串";
module.exports = {
    test
}

而一个模块想要引用另一个模块对外暴露的变量,用require关键字就行了

var index = require("./test.js");
console.log(index.test);

这样test里面的变量就被index里面引用了

image.png

二、内置模块

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);
image.png

可以获取从前台地址栏传过来的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)
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容

  • https://nodejs.org/api/documentation.html 工具模块 Assert 测试 ...
    KeKeMars阅读 6,297评论 0 6
  • Node基本 node的最大特性莫过于基于事件驱动的非阻塞I/O模型。 node通过事件驱动的方式处理请求,无须为...
    AkaTBS阅读 2,155评论 0 11
  • ##### URL模块 这个模块可以帮助我们解析url地址,从里面提取很多有用的内容供我们使用; 假设这是一个ur...
    浪流儿阅读 2,925评论 0 2
  • 个人入门学习用笔记、不过多作为参考依据。如有错误欢迎斧正 目录 简书好像不支持锚点、复制搜索(反正也是写给我自己看...
    kirito_song阅读 2,445评论 1 37
  • cmd命令: ./ 当前目录 ../ 上一级 dir 查看当前目录 ls 查看当前目录下文件 win...
    3hours阅读 542评论 0 1