最新公告
  • 欢迎您光临网站无忧模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • node入门学习笔记(超基础)

    正文概述 掘金(Antoine丶尘)   2021-01-19   473

    1.命令行窗口

    常用指令:

      dir:列出当前目录下的所有文件

      cd 目录名:进入指定目录

      md 目录名:创建一个文件夹

      rd 目录名:删除一个文件夹

      ./当前目录的文件

      ../上一级目录的文件

    环境变量:

    Path

      在命令行打开一个文件时,都会进入这个文件的当前目录下打开,如果没找到会到环境变量的path里去找,类似于javascript的作用域,可以把某文件的路径写到path里就可以随处打开。

    2.node简介

    • Node.js时一个能够在服务端运行就javascript的开放源代码,跨平台javascript运行环境。

    • Node.js采用google的V8引擎运行js代码,使用事件驱动,非阻塞和异步I/O模型等技术来提高性能。

    • Node的服务器是单线程的,但是在后台拥有一个I/O线程池。

    3.node配置

    • 在node官网下载了后一路next直接完成,在命令行里输node -v就可以看到当前的版本。

    • node代码自动补全:在webstorm的setting里的language里的javascript里有个libraries,里面勾选上node.js Core就能够实现自动补全。

    • node直接运行js文件,可以在ws里最下面的terminal终端里直接node 文件名来运行,也可以在代码区右键运行。

    4.模块化

    • Ecmascript有一些缺陷:

      没有模块系统

      标准库较少

      没有表转接口

      缺乏管理系统

    • 在Node中,一个js文件就是一个模块

    • 我们可以通过exports来向外暴露变量和方法,只需要将需要暴露给外部的变量和方法设置为exports的属性即可

    • 使用require来引入其他模块,同时会返回一个对象,对象代表的就是引入的模块,以下是简单例子:

    1.js
    
    exports.add = function(x,y){
        return x+y;
    }
    
    2.js
    var addition = require('./1.js');  
    
    console.log(addition.add(3,5));
    

    这样就会输出8

    • 在Node中,每一个js文件中的代码都是独立运行在一个函数中,而不是全局作用域,所以一个模块中的变量和函数在其它模块中无法访问(避免污染全局)

    • node中有一个全局对象global:在全局中创建的变量都会作为global的属性保存

    var a=10;
    console.log(global.a);
    

    输出这样一条会出现undefined,因为a是在函数里,global会输出全局的。

    • node在执行模块中的代码时,会把代码包裹在以下的一个函数里
    function(exports,require,module,__filename,__dirname){}
    

      exports:用来将变量或函数暴露到外部

      require:函数,用来引入外部的模块

      module:代表模块本身

      __filename:当前模块的完整路径

      __dirname:当前模块所在文件夹的完整路径

    • module.exports与exports区别:

      exports=module.exports

      如果直接exports={}会导致exports不再指向module.exports,就会导致失效

    所以:

      通过exports来暴露内部变量只能exports.xxx=xxx

      通过module.exports可以通过.,也可以直接赋值

      module.exports.xxx=xxx

      module.exports={}


    5.npm(node package manager)

    • 包是一个增强版的模块,一个包里除了js文件还必须有package.jaon:用来描述非代码相关的信息,注意json里不能写注释。

    • npm就相当于一个包的管家

    npm命令:  

      npm -v查看npm版本

      npm search 包名 搜索包

      npm install/i 包名 安装包

      npm remove/r 包名 删除包

      npm install 包名 --save 安装包并添加到依赖中

      npm install 下载当前项目依赖的包

      npm install 包名 -g 全局安装包(一般安装工具)

      npm服务器在国外,在国内一般使用淘宝镜像,直接到官网下载安装

    下载的包直接通过

    var express = require("express");
    

    引入node在使用模块名来引入模块时,它会首先在当前目录的node_modules中寻找是否有,如果没有将会去上一级寻找,一直找到根目录,没有则报错。


    6.buffer缓冲区

      buffer结构和数组很像,操作方法类似

      数组中不能存储二进制文件,而buffer就是专门用来存储二进制数据

      buffer中存储的都是二进制数据,但是显示的时候都是以16进制显示

      Buffer.from(str) 将一个字符串转换为buffer

      buffer.length 占用内存的大小

      str.length 字符串的长度

      buffer.tostring()将缓冲区的数据转换为字符串

      buffer的构造函数不推荐使用,是废弃的

      采用Buffer.alloc(10)来创建一个10字节的buffer

      buffer的大小一旦确定,便不能够改变

      只要数字在控制台或页面中输出一定是10进制

    7.fs文件系统

    • 在node里,与文件系统的交互非常重要,服务器的本质就将本地的文件发送给远程的客户端。

      使用前需要引入var fs = require("fs")

    同步文件的写入:

    1.打开文件

    fs.openSync(path,flags[,mode])
    

      path: 要打开文件的路径

      flags: 打开文件要做的操作的类型

      r :只读的

      w :可写的

      mode :设置文件的操作权限,一般不传

      返回值:该方法会返回一个文件的描述符作为结果,可以通过该描述符进行操作

    2.向文件中写入内容

    fs.writeSync(fd,string [, position[,  encoding]])
    

      fd:文件的描述符,需要传递要写入的文件的描述符

      string: 要写入的内容

      positon:写入的起始位置

      encoding:写入的编码,默认utf-8

    var fs = require("fs")
    
    var fd = fs.openSync("hello.txt","w")
    
    fs.writeSync(fd,"node入门学习");
    

      这样就会在hello里写入node入门学习

    3.保存关闭文件

    fs.closeSync(fd)
    

    异步文件的写入:

    fs.open(path,flags[,mode],callback)
    

      异步调用的方法,结果都是通过回调函数返回的

      回调函数两个参数

      err:错误对象 ,如果么有错误就为null

      fd: 文件的描述符

    fs.write(fd,string [, position[,  encoding]],callback)
    

      用来异步写入一个文件

    fs.close(fd,callback)
    

      关闭文件

    异步文件写入例子:

    var fs = require("fs");
    fs.open("hello2.txt","w",function(err,fd){
        if(!err){
            fs.write(fd,"异步写入",function(err){
                if(!err){
                    console.log("写入成功");
                }
                fs.close(fd,function(err){
                    if(!err){
                    console.log("文件已经关闭");
                    }
                })
            })
       }
    });
    

    8.简单文件写入(也分同步和异步)

    fs.writeFile(file,data[,options],callback)
    fs.writeFileSync(file,data[,options])
    

      file: 要操作文件的路径

      data: 要写入的数据

      options: 选项,可以对写入进行一些设置

      callback: 当写入完成以后执行的函数

      用简单文件来写入便不用open和close

    var fs = require("fs");
    fs.writeFile("hello3.txt","哈哈哈",function(err){
        if(!err){
            console.log("写入成功");
        }
    })
    

    9.流式文件写入

    • 同步 ,异步,简单文件的写入都不适合大文件的写入,性能较差,容易导致内存溢出
    fs.createWriteStream(path[,options])
    

      可以用来创建一个可写流

      path:文件路径

      options 配置的参数

    var fs = require("fs");
    var ws = fs.createWriteStream("hello4.txt");
    ws.write("可写流写入1");
    ws.write("可写流写入2");
    ws.write("可写流写入3");
    ws.end();
    

    10.简单文件读取

    fs.readFile(path[,options],callback)
    
    fs.readFileSync(path[,options])
    

      path 要读取的文件的路径

      options 读取的选项

      callback 回调函数,通过回调函数将读取到内容返回(err,data)

      err 错误对象

      data 读取到的数据,会返回一个Buffer

    var fs = require("fs")
    
    fs.readFile("hello4.txt",function(err,data){
    
    	if(!err){
    
    		console.log(data.toString());
    
    	}
    
    })
    

    11.流式文件读取

    var fs = require("fs");
    var rs = fs.createReadStream("hello4.txt");
    var ws = fs.createWriteStream("hello5.txt");
    rs.pipe(ws);
    

    pipe()可以将可读流中内容,直接输出到可写流中

    12.其他文件操作

      检查文件是否存在: fs.existsSync(path)

      获取文件的状态:fs.statSync(path)

      删除文件fs.unlinkSync(path)

      读取一个目录的结构fs.readdirSync(path[,option])

      截断文件:fs.truncateSync(path,len)等等

      监听文件变化:fs.watchFile(path,listener)


    下载网 » node入门学习笔记(超基础)

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元