1、node概念
node是一个平台 基于c++开发
不是有js才有node 是因为node的平台,js才可以运行在服务器端
学习资料https://nodejs.org/dist/latest-v14.x/docs/api/
学习node达到水平:
登录注册、增删改查。
基本的后台管理系统需要独立实现。
能理解清楚前后端分离思想。
会使用接口
在实际开发中,懂得如何和后台进行交互
2、环境变量配置
3、包管理器以及模块化
npm其实是一个平台,上面放了很多包。自己也可以定义包放在上面。
npm是一个国外的平台,所以有时候下载会比较慢。可以使用国内镜像cnpm或者yarn(缓存)
如果网络比较慢,有时候会下载失败。需要重新下载。
如果项目需要拷贝的时候,最好删除node_modules文件夹。拷贝完了重新下载。
cnpm装出来的包比较乱,不影响使用。一般网络情况允许的情况下,还是使用npm
cnpm安装 npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm功能和npm一样,使用方法一样只是多了一个c cnpm install
安装 cnpm install 文件名字@版本号 写依赖-S/-D/-g
包管理工具只是node的一个功能而已。
模块化可以看另一篇文章:https://blog.csdn.net/weixin_53037175/article/details/111399717
4、执行node文件
执行js相当于在服务器环境下执行: node 文件名 终止代码ctrl+c
执行文件的时候,找到文件所在目录,直接在node环境下(或者在目录下cmd,前提要有node环境)执行文件或者文件名字,不能取node
5、global
global是全局对象,可以直接使用,不需要单独引入.
node文件相当于是服务器的不是客户端的
服务器端没有了window,有global
global相当于客户端中的window
global.console.log('这是打印信息');
定时器例子:
global.setInterval(function(){
console.log(1111);
}, 1000)
global.setTimeout(()=>{
console.log('这是单次定时器')
}, 100)
6、寻找路径
当前文件所在目录
console.log(__dirname);
当前文件地址
console.log(__filename);
7、const fs
导入模块
const xxx =require(‘模块’)
require(模块) 首先判断是否有模块。
内置的模块一般是已经定义好的。
自己写的或者下载的模块要放在node_modules内部,最后新建该模块的文件夹,因为执行的时候首先会去node_modules内部寻找该模块,找到就进行加载。
一般默认index.js是主入口文件,如果别的文件作为主入口,一定要配置package.json{“main”:“主入口文件”}
如果index.js和package.json同时存在,以package.json配置为准
如果没有package.json和index.js,会报错:Cannot find module “xxx”。
导出则:exports.变量=值
fs是一个内置的模块,需要单独引入。
模块引入的时候,一般使用const
fs是文件系统,一般用来和文件有关的操作
const fs=require('fs');
写文件
fs.writeFile('文件名','数据',(err)=>{})
fs.writeFile('my.xls','hello node',(err)=>{
if(err) throw err;
console.log('文件书写成功')
})
删除文件
fs.unlink('文件名字',(err)=>{})
fs.unlink('./my.xls',(err)=>{
if(err) throw err;
console.log('文件删除成功')
})
读文件
fs.readFile('./my.txt','utf-8',(err,data)=>{
if(err) throw err;
// data默认接收到的数据是buffer。如果需要转化。
// 两种方式1、data.toString() 2、增加参数'utf-8'
console.log(data)
console.log(data.toString())
})
新建文件夹
fs.mkdir('文件夹名字',(err)=>{}) 如果该目录存在,去创建会报错
fs.mkdir('jd',(err)=>{
if(err) throw err;
})
删除目录
fs.rmdir('jd',(err)=>{
if(err) throw err;
})
读取文件夹
fs.readdir(__dirname,(err,files)=>{
if(err) throw err;
// files存储的是当前文件夹下的所有文件
console.log(files);
})
stat获取当前路径的状态
fs.stat(__dirname,(err,stats)=>{
if(err) throw err;
// isFile()判断是否是文件
console.log(stats.isFile());
// isDirectory()判断是否是目录
console.log(stats.isDirectory())
})
8、创建文件并进行遍历输出名称
创建淘宝文件夹以及里面其他文件
const fs=require('fs');
function demo(proname){
return {
proName:proname,
prolist:[
{
name:'css',
type:'dir'
},
{
name:'images',
type:'dir'
},
{
name:'js',
type:'dir'
},
{
name:'index.html',
type:'file'
}
}
}
function createDemo(proname){
var str=`<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
</body>
</html>`;
var pro=demo(proname);
//创建主目录
fs.mkdir(__dirname+'/'+proname,(err)=>{
if(err) throw err;
//对其里面文件进行遍历
pro.prolist.forEach((item,index)=>{
if(item.type=='dir'){
//完整路径:文件夹所在目录/主目录/文件夹名
fs.mkdir(__dirname+'/'+proname+'/'+item.name,(err)=>{
})
}else{
fs.writeFile(__dirname+'/'+proname+'/'+item.name,str,(err)=>{
})
}
})
})
}
createDemo('taobao')