node.js安装以及基本操作

本文介绍了Node.js的基本概念,包括其与JavaScript的关系,并详细讲解了如何在命令行进行文件和文件夹的操作,如mkdir、cp、mv、rm等。此外,还介绍了Node.js读取和写入文件的方法,创建服务器的初步步骤,模块化开发的概念,以及npm下载工具的使用和nrm工具的管理。
摘要由CSDN通过智能技术生成

 

简介

node.js是浏览器的js引擎。 浏览器中有一个js引擎用来解析js代码,只能解析js代码中的ECMAScript,dom和bom的解析依赖的是浏览器本身。 将这个js引擎单独拿出来,就是node了。

node.js和js的关系:

要让这个引擎运行起来,有人将他做成了一个软件,安装在电脑上,js代码就不用依赖浏览器运行了,在电脑的命令 行也能运行js代码。 为什么要这么做?因为这样的话,js就能写后台了。

官网:https://nodejs.org/en/

中文网:http://nodejs.cn/

初体验

for(var i = 0; i < 5; i++){
    console.log(i) //0 1 2 3
}

for(var i=1;i<=3;i++){
    setTimeout(function(){
        console.log(i) //4 4 4
    })
}

for(var i=1;i<=3;i++){
    (function(i){
        setTimeout(function(){
            console.log(i) //1 2 3
        })
    })(i)
}

编辑文件和文件夹基本命令

有许多基础的命令用来编辑文件和文件夹,包括mkdir, cp, mv, rm, rmdir以及vi。下面我们来简要地介绍一下这些命令。

mkdir

“make diretory”的缩写,用来创建文件夹,语法为mkdir后接新文件夹的目录。可以用-p选项,来一起创建路径中不存在的文件夹(这样你就不用挨层创建了)。

 cp

“copy”的缩写,用来把文件从一处复制到另一处。语法为cp后接原始路径,后接目标路径。如果你想复制整个文件夹和所有内容,需要添加-R选项。如果指定的目标路径不含文件名,则 cp 命令会按原名复制。如果指定的目标路径包括文件名,则会复制为你指定的文件名。如果仅指定新文件名,则会在原处以新名称创建文件副本。注意,系统会自动替换同名文件而不出现提示。

mv

“move”的缩写,用来移动文件。语法为mv后接原路径,后接新路径。mv 的指定路径规则和 cp 是一样的(没错,如果仅指定新文件名,它就成了重命名命令)

rm

“remove”的缩写,会永久删除文件。注意,command-line中没有废纸篓。语法为rm后接文件路径。然而,使用 rm 命令删除的文件有可能可以通过数据恢复工具恢复。如果希望安全删除文件,可以使用srm命令。

 rmdir和rm -R

rmdir是“remove directory”的缩写,这个命令会永久删除文件夹。再强调一遍,CLI 中木有废纸篓。语法为rmdir后接希望删除目录的路径。然而,rmdir 命令无法删除含有任何其他文件的文件夹,所以大多数情形下rmdir命令是不适用的。不过,你可以利用rm添加-R选项来删除文件夹及包含的所有文件。

vi

代表“visual”(视觉的),然而这个名称相当具有讽刺意味:vi可能是可视化效果最差的文本编辑器了。然而,vi 是 command line 中最常见的文本编辑器。用vi打开文本文件,只需要输入vi后接文件路径即可。Mac OS X 还提供了nano,一个更加现代的文本编辑器。它也更加方便,例如在底部包含了一个作弊小条(=_=),上面有常用的快捷键列表(你就不用背下来它们了)。然而,vi却有时是默认的文本编辑器,所以掌握vi是很有用的。

和less命令类似,vi命令会占用整个 Terminal 空间来显示文件内容。打开后,在“command模式”,vi 会等你输入一些预定义字符来告诉 vi 你想做什么。你也可以使用键盘上的箭头键单纯地浏览文件。你想编辑时,按A开始(会进入编辑模式)。文字会插入到光标处。如果你想保存,需要先退出编辑模式进入 command 模式。方法是按下esc键。回到 command 模式后,按住shift同时按两次Z来保存并退出。如果你不想保存,在 command 模式输入:quit!并按enter

return直接退出。


读取文件

手册文档:http://nodejs.cn/api/url.html

require() - 文件引入 / 引入了一个文件:fs.js

fs.js 在 node.js系统内部

const fs = require('fs');

fs.readFile() 异步地读取文件的全部内容

fs.readFile('test.json',function(err,data){
    //err - 读取失败
    //读取成功,err就是null
    //data是读取成功之后的读取出来的数据
    
    //判断是否有错误
    if(err){
        console.log(`读取信息存在错误,错误信息是:${err}`);
        return;
    }
    //运行到此处,说明if中代码没有执行,没有错误
    console.log(data);//默认读取出来的是一个 buffer 数据(16进制)
    console.log(data.toString());//转成toStirng()
})

console.log(data);
console.log(`异步的标志`);
//异步读取文件
fs.readFile('test.json','utf-8',(err,data)=>{
    if(err){
        console.log(`错误了,错误信息是:${err}`);
        return
    }
    console.log(data);//加上可选项编码可不加toString()
})

console.log(data);
console.log(`异步的标志`);

fs.readFileSync() - 同步获取文件

//同步获取文件
var data = fs.readFileSync('test.json','utf-8')

console.log(data);
console.log(`异步的标志`);

writeFile() - 异步写入 / 文件不存在则自动创建

fs.writeFile('test.json','hello nodejs','utf-8',err=>{
    if(err){
        console.log(`错误了,错误是:${err}`);
        return;
    }
    console.log(`写入成功`);
})
console.log('异步标志');

writeFileSync() - 同步写入

fs.writeFileSync('test.json','hello ECMAScript','utf-8');
console.log('写入成功');
console.log('异步标志');

nodejs 创建服务器,实现apache的过程

//引入内置文件 http.js 引入js文件可以省略.js
const http = require('http');
//创建服务器
let server = http.createServer(function(request,response){
    // console.log(request);
    //request - url属性 请求的路径
    // console.log(request.url);
    
    //响应 - end方法
    // response.end('ok')

    //设置响应头避免乱码
    // response.writeHead(208,'sucess',{
    //     'content-type':'text/html;charset=utf-8'
    // })

    response.setHeader('content-type','text/html;charset=utf-8');
    response.end('这是我自己创建的服务器哦');
})
//监听端口
//server.listen(9527) - 端口号建议7000以上,防止冲突
require('http').createServer((req,res)=>{
    res.end('6666')
}).listen(8848)

模块化开发

在 node js 中一个文件就是一个模块,每个文件都有自己的作用域,系统提供的模块如:fs.js/http.js/url.js/vm.js/domain.js ...

自定义模块 - 自己定义的文件

让a.js将数据暴露给b.js

第三方模块:别让写好的模块,直接下载下来就能使用 - 如:jQuery/Swiper/Bootstrap/Vue/jQuery-validate ...

下载工具

下载工具可以不用去官网 - npm

nodejs自带npm工具

测试工具:npm -v - 弹出版本信息说明已经安装nodejs

npm下载: npm install 模块名称 - 可简写:npm i 模块名称 - 下载多个模块:npm i 模块1 模块2 模块3 ...

下载会自动生成一个文件夹 :node_modules/下载好的模块

指定版本下载:npm i 模块名@版本号 - 默认下载最小版本

卸载命令:npm uninstall 模块名称

初始化命令:npm init

新建项目之后执行命令完以后会生成一个 package.json文件,文件中会记录所有项目中以来过的模块

项目上线的时候,将项目文件和package.json上传到服务器中,服务器中执行命令:npm i 将记录好的所有模块都下载

nrm工具

nrm - 管理npm下载地址

需要下载使用:npm i 工具名称 -g

-g/--global - 全局安装,安装后可在电脑任何地方使用

测试工具: nrm --version 有版本号代表已经安装

测试网速:nrm test / nrm ls(详细信息包含地址)

切换下载地址:nrm use 地址名

cnpm - 中国下载工具,与npm使用一样,大陆建议使用 cnpm

需要下载使用:npm i cnpm -g

可能Windows下载会报错,解决方案:找到 C:/Users/Adminstrator/AppData/Roaming/npm/node_modules/nrm/cli.js 的第17行,将 process.env.HOME 改成 process.env.USERPROFILE 或 process.env.HOME?process.env.HOME:process.env.USERPROFILE

//console.log(process.env.HOME) 为undefined报错,正确则为路径

cnpm

cnpm -v -查看版本

cnpm i 模块名称 - 下载模块

cnpn uninstall 模块名称 - 卸载模块

    注:cnpm如果没有提前初始化,不存在package.json文件,则会卸载失败;且初始化后,下载模块时需要加一个参数:-s(--save),表示保存当前的package.json文件中,以后可以 使用cnpm i 进行安装。

   扩展:下载模块,参数加 -d(--save-dev),表示下载的模块只在本地使用,服务器使用cnpm i 时不安装这个模块。

cnpm init - 初始化命令

    注:cnpm init 的时候,package.json文件夹中的 name键的值不允许是中文,初始化的时候需要手动填写name,不然默认是以文件夹的名称来命名。

    扩展:cnpm init -y ,初始化全部使用默认值来创建package.json,这里文件夹名必须是英文,否则报错。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值