我是靠谱客的博主 拼搏铅笔,最近开发中收集的这篇文章主要介绍nodejs-第一天,http/commonjs/npm,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1. http服务器

const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
    res.statusCode = 200;
    res.setHeader('Content-Type', 'text/plain');
    res.end('hello world');
});

server.listen(port, hostname, ()=>{
    console.log(`server running at http://${hostname}:${port}/`);
});

1. 引入http模块

var http = require('http');

2. 创建服务

http.createServer(function (request, response){

})

createServer中函数的参数:
1. request 接收浏览器端传过来的信息
2. response 从服务器端向浏览器端输出内容
3. response.writeHead(); 请求头,包含状态码和Content-Type指明文件类型,编码格式等
4. response.write() 向浏览器写入的内容
5. response.end() 请求结束
6. 注意,若没有图标文件,会有两次请求,可以使用request.url !== '/favicon.ico'判断,剔除掉不想要的请求。

3. 监听端口

listen(端口号)

var http = require('http');

http.createServer(function (request, response){
    // request 接收浏览器端传过来的信息
    // response 从服务器端向浏览器端输出内容
    response.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'});

    if(request.url !== '/favicon.ico') { // 若是没有ico图标,会请求两次
        console.log('hello world');
        response.write('hello world'); // write()方法只是输出,客户端还在等待
        response.end(); // 结束
    }

}).listen('4000');
console.log('server listening at 4000');

2. 模块

Commonjs 规范

node调用借口例子:

1. 定义模块uitl.js
// 模块定义
var util = {
    sayHello: function(){
        return 'hello nodejs'
    },
    add: function(x, y){
        return x + y;
    }
};
// 模块接口的暴露
module.exports = util;
2.入口文件调用模块

入口文件commonjs.js

var http = require('http');
// 模块的调用
var util = require('./util');

http.createServer(function (request, response){
    response.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'});
    if(request.url !== '/favicon.ico') { 
        // 模块方法的调用
        response.write(util.sayHello().toString()); 
        response.write(util.add(2,4).toString()); 

        response.end(); 
    }

}).listen('4000');
console.log('server listening at 4000');

1.通过qequire()调用自定义模块

var util = require('./util');

2.调用自定义模块的方法

util.sayHello();
module.exports另一种写法
exports.sayHello = util.sayHello;
exports.add = util.add;

调用时:

var sayHello = require('./util').sayHello;
var add = require('./util').add;

方法调用:

sayHello();
add(1,2);

3. NPM包管理工具

1.forever

让nodejs应用当成服务,在后台执行

$ sudo npm install forever -g   #全局安装
$ forever start app.js          #启动
$ forever stop app.js           #关闭
$ forever start -l forever.log -o out.log -e err.log app.js   #输出日志和错误

2.tree

查看当前目录文件
brew install tree

3.npm list

查看npm安装的模块

4.npm info XXX

查看指定模块信息,包括各种版本

5.npm 安装指定版本模块

npm i xxx@1.1.0

6.npm init 后端配置文件

{
  "name": "node",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "dependencies": { // 项目依赖

  },
  "devDependencies": { // 开发依赖,上线是,这个依赖就不需要

  },
  "scripts": {
    "test": "echo "Error: no test specified" && exit 1",
    "start": "node server.js"
  },
  "author": "",
  "license": "ISC"
}

"dependencies": { } 项目依赖
"devDependencies": { }开发依赖,上线是,这个依赖就不需要

7.npm install

执行npm install xxx –save 安装在dependencies,–save 可简写为-S
执行npm install xxx –save-dev 安装在devDependencies,–save-dev简写为 -D
例如:

cnpm i babel-cli --save-dev // 安装到devDependencies中

若只有package.json,只需要npm install,即可下载package.json中的模块

8.npm uninstall

可以加后缀 –save/–save-dev 移除package.json中的记录

9. 模块版本

"babel-core": "^6.0.0"
* * 安装最新版本
* ^ 插入符号会更新最新的主要版本(第一个数字)。^ 1.2.3将匹配任何1.xx版本,包括1.3.0,但会在2.0.0上停止。
* ~ 波浪符号与最的次要版本(中间号码)匹配。〜1.2.3将匹配所有1.2.x版本,但将错过1.3.0。

10. nrm NPM 源管理器

安装

npm i nrm -g

nrm ls查看源

 * npm ---- https://registry.npmjs.org/
  cnpm --- http://r.cnpmjs.org/
  taobao - https://registry.npm.taobao.org/
  nj ----- https://registry.nodejitsu.com/
  rednpm - http://registry.mirror.cqupt.edu.cn/
  npmMirror  https://skimdb.npmjs.com/registry/
  edunpm - http://registry.enpmjs.org/

nrm test 速度测试

 * npm ---- 686ms
  cnpm --- 257ms
  taobao - 213ms
  nj ----- Fetch Error
  rednpm - 1373ms
  npmMirror  3134ms
  edunpm - Fetch Error

nrm use xxx 切换源

11.清除npm缓存

安装模块报错或很慢,退出安装。当继续安装时,有可能包没有覆盖,这时需要先卸载,再清除缓存

npm cache clean 

最后

以上就是拼搏铅笔为你收集整理的nodejs-第一天,http/commonjs/npm的全部内容,希望文章能够帮你解决nodejs-第一天,http/commonjs/npm所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部