node入门(二)-- 模块系统/cheerio/webSocket

模块系统

CommonJS(cmd规范) -- 同步加载
exports、module.exports、require('./xx.js')
加载方式(只会加载一次)
相对路径(./)或绝对路径(../)

模块名找寻方式:(npm包下载默认名)
node_modules->父目录node_modules->NODE_PATH

exports 暴露一部分

// 在a.js中
exports.A = class A{
    static fn (){
        console.log('这是A的静态方法');
    }
};

let B = '局部不暴露的B';

exports.C = function () {
    console.error('暴露的C');
};

// 在testNodejs.js引入
'use strict'
let a = require('./a.js');

a.A.fn(); //这是A的静态方法
console.log(a.b); //undefined
a.C();//暴露的C

module.exports 暴露全部

// 在b.js中

var exports =module.exports = class B{
    static fn (){
        console.log('这是静态方法');
    }
    f(){
        console.log('这是普通方法!')
    }
};
exports.C = '暴露的变量';

// 在testNodejs.js引入

const B = require('./b.js');

B.fn();//这是静态方法
new B().f(); //这是普通方法!
console.error(B.C);//暴露的变量

npm 模块管理工具

npm是随同nodeJS一起安装的包管理工具,能解决nodejs代码部署上的很多问题

    首先cd '需要安装的目录'
    设置npm镜像为淘宝镜像
    npm config set registry https://registry.npm.taobao.org

    备注 : 常用的npm命令

    npm init (一直回车就可生成package.json文件)
    npm install xxx 安装模块

    npm install xxx -S(或者--save)安装模块
    会安装到package.json文件中,这样打包给别人。
    就可以通过npm install安装所有的依赖模块

    npm install xxx -g 将模块安装到全局环境中
    //多用于安装webpack,grunt,node-supervisor(nodejs 热处理)

    npm ls 查看安装的模块及依赖
    npm ls -g 查看全局安装的模块及依赖

    npm uninstall xxx  (-g) 卸载模块
    npm cache clean 清理缓存

现在来试试一个替代jQuery,在nodejs中运行的模块–cheerio

jquery对象必须是window,node的全局对象是global,所以出现类似jquery的模块cheerio
但是,cheerio只提供类似JQ的查找元素方式 -- 可做网络抓取
如果你需要使用jQuery。先下载npm install jquery@1 (代表1的版本,默认下载最新3)
可以 window.$ = window.jQuery =require('jquery');

var http = require('http');
var cheerio = require('cheerio');

var $ = cheerio.load('<html><body><div><span>测试</span></div></body></html>');
console.error($('span').text()); //测试
console.error($('div').html()); //<span>&#x6D4B;&#x8BD5;</span>

http.get({host: 'www.baidu.com'}, function (response) {
    response.on('data', function (data) {
        var $ = cheerio.load(data.toString());
        console.log($('a').attr('href'));
        //  //www.baidu.com/gaoji/preferences.html
    })
});

webSocket

安装npm install ws

在testWebSocket.js中

"use strict";

var ws = require('ws');
var servicer = new ws.Server({port:41233});//创建server
//client 拿到所有的链接的数组,用于群发 -- 
// 应用会更新一个带登录注册demo
/*function sendAll(str) {
    for (let skt of servicer.clients) {
        skt.send(str); //str代表要发送的数据
    }
}*/
//socket得到webSocket链接
servicer.on('connection',function (socket) {
    console.log('连接上了');
    socket.on('message',function (data) {
        console.log(data);
        socket.send('已经接收的消息:'+data);
    });
    socket.on('close',function () {
        console.log('一个链接断开');
        socket.close();
    });
});

在testWebSocket.html文件中

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Test ws</title>
</head>
<style>
    div{ width: 200px;height: 400px;color: #e4393c;
    font-size: 14px;}
</style>
<body>
<input><button>发送</button>
<div></div>
    <script>
        var div = document.getElementsByTagName('div')[0];
        var inp = document.body.children[0];
        var btn = document.body.children[1];
        var ws = new WebSocket('ws://localhost:41233');
        ws.onmessage = function (o) {
            var p = document.createElement('p');
            p.innerHTML = o.data;
            div.appendChild(p);
        }

        btn.onclick = function () {
            ws.send(inp.value);
            inp.value = '';
        }
    </script>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值