node的一些基本功能和方法

  • node基本命令
  • node -v    查看nodeJS版本
  • npm -v     查看npm版本
  • node -h     node帮助信息
  • npm install -g cnpm --registry=https://registry.npm.taobao.org   安装淘宝镜像
  • 命令行基本操作
  • cd ..      进入目录、跳出目录
  • 上下键     查看输入历史记录
  • tab键        自动补全内容
  • ctrl + c      退出操作( 向后执行 )
  • cls              清屏
  • dir              显示文件
  • mkdir         创建文件夹
  • rmdir         删除文件夹
  • type nul>file.txt   创建空文件
  • echo [content]>file.txt  创建带内容文件
  • del file.txt   删除文件
  • 安装模块
  • npm install xxx    局部安装
  • npm install xxx –g    全局安装
  • npm root –g    全局安装的位置
  • nvm\nrm

nvm

  • node  version  manage  对node版本的管理
  • nvm ls 查看
  • nvm install v10.0.0 创建版本
  • nvm use 10.0.0

nrm

  • node register manage  对npm下载源的管理
  • 安装:cnpm  i  -g  nrm
  • nrm ls 查看
  • nrm use 切换
  • npm操作node模块
  • npm install 下载模块 
  • --save  简写  –S     --save-dev  简写  -D
  • 卸载模块 npm uninstall 模块名
  • 安装指定版本的模块   npm install filename@1.0.0
  • 查看 模块 所有版本  view  filename  versions
  • 版本号说明:
  • latest | *  :  最新版本
  • ^1.2.3  :   大版本是固定,中版本和补丁版本不固定
  • ~1.2.3  :   大版本和中版本是固定,补丁版本不固定
  • 1.2.3  :   全部都是固定的
  • 更新模块 npm update 模块名
  • 查看项目中的所有过期模块  npm outdated
  • 锁定版本的模块在  package-lock.json  文件
  • 上传局部代码包:
  • npm addUser
  • npm publish
  • npm unpublish file --force
  • 上传全局文件包:
  • index.js : #! /usr/bin/env node
  • package.json :

"bin": {

"express111": "index.js"

}

  • npm link  将全局包安装(实际就是拷贝)到全局中
  • npm publish
  • npm unpublish file --force

 

  • node基本操作
  • node   开启node环境( REPL模式 ),可直接操作
  • node hello、node hello.js  后缀名为js的时候可以省略
  • cnpm install -g nodemon      安装nodemon, 实时侦测文件的变化
  • 模块

CommonJS

CommonJS定义:

CommonJS: 通用模块规范, 主要由NodeJS具体实现; 根据CommonJS规范, 一个单独的文件就是一个模块。每一个模块都是一个单独的作用域, 也就是说, 在该模块内部定义的变量, 无法被其他模块读取, 除非定义为global(浏览器中为window)对象的属性。

Module对象

  • module.exports属性 

module.exports属性表示当前模块对外输出的接口,其他文件加载该模块,实际上就是读取module.exports变量。

  • exports变量

node为每一个模块提供了一个exports变量(可以说是一个对象),指向 module.exports。这相当于每个模块中都有一句这样的命令 var exports = module.exports;

这样,在对外输出时,可以在这个变量上添加方法。例如  exports.add = function (r){return Math.PI * r *r};注意:不能把exports直接指向一个值,这样就相当于切断了 exports 和module.exports 的关系。例如 exports=function(x){console.log(x)};

一个模块的对外接口,就是一个单一的值,不能使用exports输出,必须使用 module.exports输出。module.exports=function(x){console.log(x);}

  • module.id 模块的识别符,通常是带有绝对路径的模块文件名。
  • module.filename 模块的文件名,带有绝对路径。
  • module.loaded 返回一个布尔值,表示模块是否已经完成加载。
  • module.parent 返回一个对象,表示调用该模块的模块。
  • module.children 返回一个数组,表示该模块要用到的其他模块。

引入模块 (require)

Require    引入模块,这个函数是全局函数

模块的加载机制

commonsJS的加载机制,输入的是被输出值的拷贝。也就是说,一旦输出一个值,模块内部的变化就影响不到这个值了。

 

第三模块的使用

下载模块 cnpm install  xxx.js     

内置模块

url模块

  • url.parse() 会解析一个 URL 字符串并返回一个 URL 对象。第二个参数布尔值true , 对query属性解析成对象

/*

 {

      protocol: 'http:', =>协议

      slashes: true, =>是否有双斜线

      auth: null,

      host: 'www.zhufengpeixun.cn',  =>域名+端口

      port: null,  =>端口

      hostname: 'www.zhufengpeixun.cn', =>域名

      hash: '#video', =>哈希值

      search: '?form=qq&lx=stu',  =>问号传递的参数[string]

      query: 'form=qq&lx=stu',  =>问号传递的参数[string] 不包含问号

      pathname: '/main/guide/index.html',  =>请求资源的路径名称

      path: '/main/guide/index.html?form=qq&lx=stu',

      href: 'http://www.zhufengpeixun.cn/main/guide/index.html?form=qq&lx=stu#video'

  }

*/

  • url.format() 返回一个从 urlObject 格式化后的 URL 字符串。 方法是parse()方法的相反操作。

querystring模块

  • parse():对query的串联字符串进行对象的解析。
  • stringify():parse()的相反操作。

Path模块

  • join()  连接路径
  • path.parse() 方法可以返回路径各部分的信息。
  • path.relative() 接受 2 个路径作为参数。 基于当前工作目录,返回从第一个路径到第二个路径的相对路径。
  • path.resolve() 可以使用 path.resolve() 获得相对路径的绝对路径计算。

fs模块

  • readFile() 异步读取文件。 readFile(filename,'utf8',function(err,buffer){}) 异步读取文件 readFile(filename,function(err,buffer){ buffer.toString() })
  • readFileSync() 同步读取文件。 var v = fs.readFileSync(filename,'utf8');    
  • writeFile() 异步写入文件 fs.writeFile(filename,'new Text',(err)=>{});
  • writeFileSync() 同步写入文件 fs.writeFileSync(filename,'new Text’);
  • appendFile() 异步地追加数据到文件,如果文件尚不存在则创建文件。
  • appendFileSync() 异步地追加数据到文件,如果文件尚不存在则创建文件。

 

  • unlink() 异步地删除文件或符号链接。
  • rename()  重命名 fs.rename(oldName , newName);
  • mkdir() : 创建文件夹。
  • rmdir():删除文件夹
  • readdir() :  读取文件夹。
  • stat() :    读取文件信息。

Process模块

  • process对象是一个全局变量,提供了有关当前 Node.js 进程的信息并对其进行控制。 作为全局变量,它始终可供 Node.js 应用程序使用,无需使用 require()。 它也可以使用 require() 显式地访问。              
  • process.argv 属性会返回一个数组,其中包含当 Node.js 进程被启动时传入的命令行参数。
  • exit()、exit事件 process.on(‘exit’,()=?{})
  • process.env 属性会返回包含用户环境的对象。 cross-env NODE_ENV=production
  • stdout、stdin 实例:简单的加法计算

http模块

  • http、https模块为网络通信模块
    • 分别对应的端口:80、443 
    • https协议是比http协议更加安全的协议,对传输的数据可以进行加密处理。
  • get()/post():进行网络GET请求
    • http.get(url,(req)=>{});
    • 实例:小爬虫
    • http.get(url,(req,res)=>{req.on(‘data’,(data)=>{context+=data.toString()})
    • req.on(‘end’,()=>{console.log(data)})

                           

  • request():
  • var options = {

               hostname : ‘localhost’,  

            path : ‘/reg/reg.php’,

            method : ‘POST’,

            headers : {  }

              };  // url对象形式

    • var data = {};        
    • var server = http.request(options,(req)=>{  });
    • server.write(data);
    • server.end();
  • axios库:前后端都能用的请求库。
  • createServer():创建一个服务器环境
    • const server = http.createServer((req,res)=>{});                    
    • server.listen(port,hostname,()=>{});
  • 简单的路由
    • 路由:根据不同的url来展现不同的网页内容。
    • req.url -> url.parse()进行分解 -> pathname找到路径进行判断
    • 通过fs.readFile()方法引入不同的静态文件
  • 获取get和post数据
  • req.method可以返回get或post值              

         get方式是通过:querystrings.parse(url.parse( req.url ).query)

  • post方式是通过:

              var str = '';

              req.on('data',function(chunk){ str += chunk; });

              req.on('end',function(){ console.log(str); });

  • ajax提交与返回
  • 只接受的string和buffer两种类型的返回

              res.end(JSON.stringify({

                     code : 0,

                     message : '更新成功'

              }));         

反爬虫 req.headers.referer;

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页