cmd命令行工具
打开
win键+ "cmd"
shift + 右击 选择打开命令行窗口
全局path环境变量
右击
我的电脑
(非快捷方式) -- 属性 -- 高级系统设置 -- 环境变量 -- 系统变量(所有用户) ------ 找path ---> 增加+"路径;"/添加功能: 重启cmd后可直接输入相应程序的
XXX.exe
/XXX
即可打开该应用程序
window命令(后面的一些node以及npm命令,linux系统只需在前面加一个$即可)
cd + 路径
打开该文件夹,或者返回上一级文件夹,注意:是文件夹而不是文件dir 显示文件列表
ren 改变文件名
move 目录 目录名 改目录名 eg.(c:>
move
c:\autoexec.bat c:\old )mkdir + xxx
创建文件夹cls 清屏
F7 显示命令历史记录
上箭头会检测到上面写的命令行代码
Ctrl+C
Ctrl+Break
强行中止命令执行mspaint 打开画图板
mstsc 远程桌面连接
ping + IP地址 检查网络是否能够连通
NodeJs
中文官网 http://nodejs.cn/
node命令
node -v 查看node的版本
node + js文件 运行该文件
npm
安装node时自动安装,npm(Node package manager),node的包管理工具
第三方托管网站 https://www.npmjs.com/
更新npm
1-重新安装新版本的node,npm会跟着更新
2-单独升级npm
npm i npm -g
npm i npm@5 -g
(指定版本)
安装和卸载全局包(工具类)
安装
npm install/i 包名 -g
安装的包一般都在 c:/user/自己的文件夹/Appdata/roaming/npm
npm下面的npm-cache文件夹用来记录曾经下载过的插件,再次下载是节省时间和流量
卸载
npm uninstall/remove 包名 -g
安装和卸载本地包
只跟自己的项目有关,不必全局使用
在自己项目的文件夹中shift+右键打开命令行窗口
注意:文件夹名称只能是英文
安装过程
1- 初始化
npm init+回车
或者npm init -y(快速初始化)
(生成一个package.json文件)2- 下载第三方模板
2.1
npm i 包名 --save
或者npm i 包名 -S
(记录在package.json的'dependencies中')2.2
npm i 包名 --save-dev
或者npm i 包名 -D
(记录在'devDependencies'中)2.3 如手动删除node-module文件夹后,手动在项目文件夹下调用
npm i(开发时)
会全部
恢复2.4 如手动删除node-module文件夹后,手动在项目文件夹下调用
npm --production(上线时用)
只会恢复dependencies中记录的插件
3- 卸载 通过
npm uninstall 包名 --save
卸载,会将package.json中的记录也删除,npm i
不会恢复注意:直接粘贴
node module
文件夹可能无用,只保留package.json
文件调用npm i
即可
注意:在包名后面+'@3'表名下载大版本问3的该包,小版本也可指定(包名@+版本号)
全局工具类(-g)
nrm
功能:解决npm因为是国外服务器而下载慢,提供一写国内的镜相下载的地址
调用
nrm ls
(查看所有的服务器地址,带*表示选择的地址)nrm use
地址简写选择后继续调用npm 的命令即可
淘宝镜相
npm i cnpm -g
将npm改为 cnpm即可
i5ting_toc
功能将md文件转为html文件
安装后调用 i5ting_toc -f 文件.md (-o是否在默认浏览器上打开)
第三方模块(-S)
express
基于NodeJS的后端web开发框架
一些express小属性与方法
1. req.query属性获取get请求中通过?传递的参数,返回值为对象 2. req.params属性获取通过路径标识符传递的参数,返回值为对象 eg.app.get('/getinfo/:name/:id') //注意冒号 /getinfo/zs/12就可以被获取
express中间件
app.use(xxxx)
专门用来注册中间件,xxxx为函数,不调用app.set(xxx,xxx)
用来配置一些中间件中间件的相关概念
1. 中间件的表现形式 (req,res,next)=>{.... next()}; (若是单独书写一个文件,勿忘将这个函数 module.exports出去) 2. 中间件共享res,req----可以将中间的一些方法挂载在这两个对象上 3. 最后一个中间件没有必要再next,但依旧是中间件 4. 使用 function xxx (req,res,next){... next()}(写在外部勿忘module.exports) app.use(xxx) //注意:xxx后面没有括号
中间件的分类
1.应用级别的中间件,挂载在app对象身上 即app.use/app.get/app.post实为最后一个中间件 2.路由级的中间件,挂载在router对象上的中间件 router.get 3.错误处理中间件:参数列表有四个(err,req,res,next) 4.内置中间件:express.static(root,[options])(express中唯一的内置中间件) 5.第三方中间件,需要通过npm安装的中间件(npm+require+app.use/npm+app.set/app.render)
express.static()(内置)
app.use('/虚拟目录',express.static('静态资源文件夹路径,多相对路径'));
(只需要调用这一句话即可,不必下载和导入)相当于Apache中的www文件夹,默认index虚拟目录与'静态资源文件夹路径相同,引入css和js时就不必考虑路径问题
使用
sever.js中
const express = require('express') var compression = require('compression') const server = express() // 注册资源压缩的中间件 server.use(compression()) // 托管静态资源目录 server.use(express.static('./assets')) server.listen(4002, () => { console.log('express server running at http://127.0.0.1:4002') })
引入css文件时,
<link rel="stylesheet" href="/assets/css/index.css">
router(路由中间件)
express提供的路由用来分发请求
router.js中
const express = require('express'); const router = express.Router();//注意是大写R router.get('/', (req, res) => { //不必在此引入ejs res.render('index', { name: 'clulu', age: 18 }) }) module.exports = router;
server.js
const express = require('express'); const app = express(); //配置模板引擎设置 app.set('view engine', 'ejs'); app.set('views', './views'); const router = require('./router.js') app.use(router); app.listen(3001, () => { console.log('sever running ....'); })
express-session(第三方)
第三方中间件,底层帮助我们开辟了一个session空间,并且产生一个cookie返回给浏览器,在下一次请求数据的时候自动的取出浏览器带过来的cookie,并将打开对应的session,取出其中的值;
使用
1.安装session模块
npm install express-session -S
2.导入session模块
var session = require('express-session');
3.在express中使用
session
中间件:// 启用 session 中间件 app.use(session({ secret: '任意字符串', // 相当于是一个加密密钥,对sessionID进行加密的字符串,值可以是任意字符,数字,符号 resave: false, //值为true时,强制将session存储在物理磁盘(storage)上,从而保证session不会轻易丢失; //值为false时,强制session保存到内存(session store)中,推荐 saveUninitialized: false //值为true时,强制将未初始化的session存到物理内存中 //值为false时,强制没有“初始化”的session保存到storage中,推荐 }))
注意:第3步以后,只要存在req,即可以访问·
req.session
这个对象4.将私有数据保存到当前请求的session会话中:
// 将登录的用户保存到session中 req.session.user = result.dataValues; // 设置是否登录为true req.session.islogin = true;
5.通过
destroy()
方法清空session
数据:(用以注销)req.session.destroy(function(err){ if(err) throw err; console.log('用户退出成功!'); // 实现服务器端的跳转,这个对比于 客户端跳转 res.redirect('/'); });
compression()(第三方)
项目部署时,开启服务器的GZip压缩功能,第三方中间件
这个中间件需要下载
npm install compression -S
需要导入
const compression=require('compression');
加载中间件
app.use(compression())
ejs(第三方)
express中的模板引擎
注意:
使用
1. 安装 npm i ejs -S 2. 将ejs配置为默认的模板引擎 app.set('view engine','ejs'); 3. 配置模板页面的存放路径 app.set('views','需要渲染的ejs文件所在的文件夹路径') 4.res.render('ejs文件,可以不写后缀,路径上面已经配置无需再写',data) 若ejs问价在set制定的文件夹得再下一及目录,就需要加'./',如'./user/index' 注意:无需require进来,通过配置进来 5. 该模板语法<%= %>
body-parser(第三方)
作用: 解析表单数据
使用
1. npm i body-parser -S 2. const bodyParser=require('body-parser'); app.use(bodyParser.urlencoded({extended:false})); + urlencoded 表示解析键值对形式的数据 + extended:false 表示不适用扩展模块来解析表单数据,而使用node内置的querystring模块来解析数据 3.取值时,使用req.body即可得到一个参数的对象
cors(第三方)
从服务器入手解决跨域问题,本质是设置请求头
真正的跨域,真正的ajax
不像jsonp跨域,只能发送get请求
使用
1. npm i cors -S 2. const cors = require('cors'); app.use(cors());
(中间件)
mysql
第三方模块,可以通过代码控制数据库
使用前提
打开mysql软件
使用
1.npm i mysql -S 2.const mysql = require('mysql'); const conn = mysql.createConnection({ host: '127.0.0.1',//注意前面不可以加协议http之类的,此数据库是tcp协议 user: 'root',//数据库账户名 password: '',//数据库账户密码 database: 'mytest'//注意:是数据库名不是连接的名称 }) conn.connect();//可有可无,如果没有在conn.query()时,先创建连接,再执行sql语句 conn.query('sql语句',(err,result)=>{ //err在sql语句出错的时候出现 //results是一个对象 })
常见sql语句(CRUD)
1.增(create) insert into 表名(name,id) values ('zs',12); affectedRow=n 2.删(delete) delete from 表名 where 匹配条件 affectedRow=n 3.改(update) update 表名 set name='hah',age=13 where 匹配条件 affectedRow=n 4.查(read) select * from 表名 where 匹配条件 affectedRow=0 select name,age from 表名 where 匹配条件 5.排序 select * from 表名 order by id(比如) desc(倒序)/asc(正序) 6.得到符合条件的数量 select count(*) from 表名 where gender='man' ----> count(*) 3 select count(*) as count(自定义新名称) from 表名 where gender='man'----> count 3
此模块特别的sql语句用法
1.增加数据 const p1 = { username: 'zs'} const sqlstr = 'insert into users set?' conn.query(sqlstr, p1, (err, result) => {}) 2.删除数据 const sqlstr = 'delete from users where id=?' conn.query(sqlstr, 2, (err, result) => {}) 3.改变数据 const p1 = {id: 3,username: 'cuilulu哈哈哈'} const sqlstr = 'update users set ? where id=?' conn.query(sqlstr, [p1, p1.id], (err, result) => {}) //注意两个问号时用数组传递参数 4.查询数据 conn.query('select * from users',(err,result)=>{}) conn.query('select * from users where id=?',3,(err,result)=>{})
art-template(前后)
作用: 动态渲染页面
官方文档 https://aui.github.io/art-template/zh-cn/docs/index.html
下载
npm i art-template -S
使用
const template=require('art-template'); const html = template('路径.html',data);(在html文件的使用同以往在前端的使用规则) 将完整的html片段直接输出即可
moment(前后)
时间格式化处理模板
使用
1.npm i moment -S 2.const dateStr=moment().format('YYYY-MM-DD HH-mm-ss')