快速入门学习nodejs(一)

@TOC

1.手写http服务器

1.在webstorm里面启动就可以在chrome浏览器里面查看了。

const http = require('http');

    http.createServer((req, res) => {
        res.writeHead(200, {"Content-type": "text/html;charset='utf-8'"});
        res.write("<head>\n" +
            "    <meta charset=\"UTF-8\">\n" +
            "    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n" +
            "    <title>Document</title>\n" +
            "</head>")
        res.write("<h1>hello world</h1>")
        res.write("<h2>I love Javascript</h2>")
        res.end("我爱学习,学习爱我!")
    }).listen(8989)

2.热部署

这样就可以ctrl+s热部署启动了。

npm install -g supervisor #-g代表全局安装

supervisor xxx.js #xxx代表要启动的文件

3.引入自己写的js文件。

区别:引入方式的区别。

#demo.js 第一种方法
const http = require('http');

function webServer() {
    http.createServer((req, res) => {
        res.writeHead(200, {"Content-type": "text/html;charset='utf-8'"});
        res.write("<h1>hello world</h1>")
        res.end("我爱学习,学习爱我!")
    }).listen(8989)
}

exports.webServer = webServer;

#demo.js 第二种方法
const http = require('http');

var obj = {

    webServer:function () {
        http.createServer((req, res) => {
            res.writeHead(200, {"Content-type": "text/html;charset='utf-8'"});
            res.write("<h1>hello world</h1>")
            res.end("我爱学习,学习爱我!")
        }).listen(8989)
    }
}

module.exports = obj;

#demo.js第三种方法

exports.webServer = function(){
	http.createServer((req,res)=>{
		res.write()
		res.write("hello world")
}).listen(8989);
	
}


#demo1.js
const demo = require("./demo.js")

demo.webServer();
supervisor demo1.js #运行文件

关于commentjs

commentjs是一种模块化的标准,nodejs就是commonJS的实现。
node下面有两类模块,一类是系统提供的,(http,fs等)一类是用户自己编写的。

1.常用的指令

https://www.npmjs.com/ 可以搜索到需要的包
package.json:包描述的文件
bin:用于存放二进制可执行的文件
lib:用于存放javascript代码的目录
doc:用于存放文档的目录
关于包管理

npm i #当有package-lock.json时候,可以找到里面的dependences里面依赖的包,自动安装node_modules 
npm list #当前环境下的所有包
npm info XXX #输出XXX包的信息
npm install XXX@2.2.3 --save #安装XXX指定版本的包

2.package.json文件

npm init #生成package.json

{
  "name": "ossDownload",#名字
  "version": "1.0.0",#版本
  "description": "",#描述
  "main": "index.js",#程序入口
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",#作者
  "license": "ISC",
  "dependencies": {
  "MD5": "^1.3.0",
  "ali-oss": "^6.5.1",
  "moment": "^2.24.0",
  "mysql": "^2.18.1",
  "md5": "latest"
}#项目需要的依赖信息
}
#  ^ 主版本不变,后两位更新

fs模块的介绍。

这是nodejs中用于和文件系统交互的模块。

const fs = require("fs")

fs.stat() #检查是文件还是目录
fs.mkdir() #创建目录
fs.writeFile() #创建写入文件
fs.appendFile() #追加文件
fs.readFile() #读取文件
fs.readdir() #读取目录
fs.rename() #重命名
fs.rmdir() #删除目录
fs.unlink() #删除文件

简单源码解析

/** path 是一个str,为需要创建的目录
 data 是一个str|buffer,为需要写入的字符串
 options 是一个数组,包含['编码','读写权限,默认num类型为438','以写入方式默认打开w']
 callback,是一个回调函数,由下面callback(openErr)可以知道只有一个参数,为写入错误时候回调
*/

function writeFile(path, data, options, callback) {
  callback = maybeCallback(callback || options); /*可以在options地方写回调*/
  options = getOptions(options, { encoding: 'utf8', mode: 0o666, flag: 'w' });
  const flag = options.flag || 'w';

  if (isFd(path)) {/*路径判断*/
    writeFd(path, true);
    return;
  }

  fs.open(path, flag, options.mode, (openErr, fd) => {/*打开文件*/
    if (openErr) {
      callback(openErr);/*调用回调*/
    } else {
      writeFd(fd, false);
    }
  });

  function writeFd(fd, isUserFd) {
    const buffer = isArrayBufferView(data) ?
      data : Buffer.from('' + data, options.encoding || 'utf8');
    const position = (/a/.test(flag) || isUserFd) ? null : 0;

    writeAll(fd, isUserFd, buffer, 0, buffer.byteLength, position, callback);/*写入buffer内容*/
  }
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值