Nodejs

Node.js

初始化node

      首先打开cmd控制台

      新建文件夹  打开文件   输入  npm  login

      Username:  yangbaoxi 

      Password: *********

      Email        :992262716@qq.com

      再次输入 npm  init  

      Name:  文件包的自定义名字

      Version:版本号

      Description: 描述

      Entrycommand :程序入口  默认  index.js 

      Git  repository: git  仓库

      Ketwords    : 关键字

      Author       :作者

      License :开源证书 (ISC)

总结:建立一个与默认JS 相同的JS

发布上传:输入ènpm  publish

下载文件:在另一个文件下建立文件输入  npm install

更新文件:在发布文件夹下 npm  publish (版本号改更)再在下载文件   npm  update

删除包:在发布文件夹下  npm unpublish  再次确定  npm --force  unpublish

一:服务器:    ------------------npm  install express   

      const  express =require(‘express’)  // 服务器插件

      var  server = expression();  //  创建服务器

      server.listen(8080);   // 端口号  8080

检测服务器是否正常:

  server.get(‘/’, function(req,res){ 

console.log(1);      res.end( );  

  })

二:文件加载到页面: --------------npm  install express-static

      const  express =require(‘express’);

       const expressStatic = require(‘express-static’); // 文件夹加载插件

      var  server = express();          server.listen(8080);

      server.use(expressStatic('./www'));// 静态文件夹加载(文件的路径)

      检测是否加载成功:

            建立一个html文件à index.html  ==>然后 cmd执行server.js

           在网页输入http://localhost:8080/index.html

三:get请求,post请求: 

1.   get请求: const express =require('express');       

      varserver = express();          server.listen(8080);

server.get('/',function(req,res){        //GET请求

     console.log(req.query);      // 获取get参数

}) 

检测:get请求:method = “get”

 

     <formaction="http://localhost:8080" method="get">

           用户:<inputtype="text" name="user" />

           密码:<inputtype="password" name="password" />

           <input type="submit"value="提交">

     </form>

      2.post请求:-----------npm   install   body-parser

            const express= require('express');

constexpressStatic = require('express-static');

constbodyParser = require('body-parser');   //post请求插件

           varserver = express();         server.listen(8080);  

server.use(bodyParser.urlencoded({        // 支持body传入

            extended:false, // 扩展  (默认值为true à要改成false

           limit:2*1024*1024  // 2M  (内存容量)

}));

server.post('/',function(req, res){            // POST请求

                 console.log(req.body);            // 获取post参数

                 console.log(req.body.user)       // 获取帐号

                 console.log(req.body.pass)     // 获取密码

});

           server.use(expressStatic('./www'));

检测:   method = “post”

<formaction="http://localhost:8080" method="post">

   用户:<input type="text"name="user" />

   密码:<input type="password"name="password" />

   <input type="submit" value="提交">

</form>

四:cookie+session(总体)

1.cookie的存储数据:  // 了解

const express = require('express');

var server = express();      

server.use('/', function(req,res){

res.cookie('lisi','123456');         // cookie存储数据

//res.clearCookie('lisi');           // 删除cookie

res.send('ok');

res.end();

});

server.listen(8080);

2.cookie加密+读取:  // 了解----------npm  install cookie-parser

  const express = require('express');

constcookieParser = require('cookie-parser')  //cookie加密插件

var server = express();

// 识别cookie(里面的乱码是加密)

server.use(cookieParser('jksfah'));

server.use('/', function(req,res){    // 读取cookie数据

   // req.secret="dfsgkldj;g";// 秘钥

   // console.log(req.cookies); // 读取内容

   res.cookie( 'wangwu' , '678900' , {signed:true} )   //签名

      3.session加密传输   // 重点 ------ npm  install  cookie-session   

       constexpress = require('express');

const cookieParser= require('cookie-parser');

constcookieSession = require('cookie-session');// session插件

var server = express();

var arr = [];                   //key值数组

for (var i = 0; i <100000; i++) {

   arr.push('sig_'+Math.random());

}

server.use(cookieParser());         //  识别cookie

server.use(cookieSession({          // keys id的名字流动key

   name:’sess’,           // name 自己记录的是哪个session

   keys:arr,          // keys id的名字流动key   

   maxAge:2*3600*1000 // maxAge 过期时间

}));

server.use('/', function(req,res){

 // 读取session中的数据

if (req.session['count'] == null){req.session['count'] = 1;}

//每次登录页面都会记录一次数据,数据保存++

else {req.session['count'] ++;}

   检测:console.log(req.session['count']);

//每当我们登录页面都会记录登录的次数

         res.send('ok');

});

server.listen(8080);

五.模板:jade  ejs  --------npm  install  jade   ejs

      1.jade:模板:

      à基本语法:

           const jade = require(‘jade’)    // jade 模板插件

           varstr = jade.render(‘div’)    // 写入文字转换为html标签

           console.log(  str )  输出:<div></div>

      模板引用+模板的写入html标签

           const jade  =require('jade');

           //  参数一:模板的路径      参数二:传输的内容

           varstr  = jade.renderFile(‘'./views/1.jade'’,{pretty:true})

-------pretty:true(是将模板整齐化)

console.log(str)

模板的语法:

1.普通语法:

2.写入属性:

3.JS的写入:

4.文字输入+css样式写入+class写入:

5.后台传值 ---模板:

6.变量:    前面要加一个   “——”

7.for循环:

8.if语句:

9.switch循环语句:


2.ejs模板:  ejs模板跟html一样

           语法:  我的名字叫: <%= name %>(ejs模板)

           const  ejs =require(‘ejs’ )      // ejs模板插件

           ejs.renderFile('./views2/1.ejs',{name:'zhangsan'},function(err, data){

if (err) {console.log('编译出错');

  else{ console.log(data);         // data ejs页面中的内容

})

//     ejs 参数1 模板路径  参数2 参数参数3 回调函数

for循环:-----

引入文件:

     ejs页面:       <% include  a.txt %>

<% include test.html %>

      执行后台JS:

           ejs.renderFile('./views2/5.ejs',{},function(err, data){

                 if(err) {   console.log('编译出错');    }

                 else{    console.log(data);         //data ejs页面中的内容}

if判断:----

.文件上传: -----npm install   multer

 

      语法: multer({dest:上传路径})

           允许上传的内容------(一般都是全部允许)

           接受内容  req.files

案例:---

const express = require('express');

const  multer = require('multer');  //  上传文件的插件

const pathLib =require('path');  //分解文件内容(系统自带)

const fs =require('fs')   // 读取写入文件(系统自带插件)

           var  server = express();

           //创建一个multer对象  ()里面添加上传文件的保存位置

           var obj = multer({dest:./www/upload})

           server.use(obj.any());   // 允许上传的内容  any()所有文件

                 server.post(‘/’ , function ( req , res ){

// 通过req.files 查看上传文件的资料

console.log(req.files)

//  查找path+添加扩展名 用一个变量接受我们要实现的后缀名。

var newName =req.files[0].path + pathLib.parse

(req.files[0].originalname).ext;

// 用fs 系统自带的插件,来进行替换“重命名”

fs.rename(req.files[0].path,newName,function(err){

if (err) {res.send('上传失败')}else{res.send('上传成功')}

})

server.listen(8080);

总结:通过form表单进行上传文件,需要加一个属性

enctype="multipart/form-data"(一定加)

      然后直接复制html路径在网页打开,上传一个文件,这个文件会下载到

({dest:./www/upload})这个路径,后缀名通过fs.rename进行改变。

七.模板引擎-----npm   install  consolidate  重点!重点!重点!

      语法:配置模板引擎:

           1.输出什么页面  参数一:固定值,  参数二:什么类型的文件

                 server.set('viewengine','html/txt/css/js……')

           2.模板存放的位置:参数一:固定值,参数二:模板文件的路径

                 server.set(  'views' ,'./xxxx路径   '    );

3.渲染到页面:参数一:渲染成什么样式(html)参数二:那种模板类型(jade/ejs)

server.engine(   'html',  consolidate.ejs/jade  )

           4.接受用户请求:参数一:接口路径,参数二:回调函数

           server.get(  “/” , function(req,res){

  res.render('模板名字', { 对应参数 })    })   //文件的渲染

案例:

const express =require('express');

constconsolidate =  require('consolidate');// 模板引擎

const ejs =require('ejs');   // ejs模板

var server = express();

server.set('viewengine','html');

server.set('views','./temp');    // 上传文件在temp文件下

server.engine('html',consolidate.ejs);

server.get('/',function(req,res) {

   res.render(‘1.ejs’,{name:’ 王琦是猪 ’})  // 将模板页渲染

server.listen(8080);

总结:我们要建立一个文件夹名:temp,里面存放我们要渲染的模板后缀名为ejs

 打开浏览器出入http://localhost:8080  得到我们渲染模板。


八.路由  --------npm  install  express-route    重点!重点!重点!

      语法:渲染不同的页面,同一个目录下/user/=>  a页面  b页面

           分流模块:创建一个路由对象

           var  route  = express.Router( ) 

           分流的请求方式: 

                 àget:  route.get()

                 àpost:  route.post()

                 àuse:  route.use()

      模拟一个路由:(熟知)

           const express = require(‘express’);

           var  server =  express( );

           1.创建一个路由对象:

           var  route  = express.Router( );

           2.实现路由

          route.get(‘/a.html’,  function(req,res){

   res.send(‘每天帅醒’)

})

route.get(‘/b.html’,  function(){

   res.send(‘累到不想在哭为止’)

})

3.绑定路由:

server.use( ‘/shei’, route )

      总结:首先建立一个路由var  route   = express.Router( );

      在第二步的参数是为了在网页上输出路径用的,绑定路由后在网页

      输入http://localhost:8080 /shei/a.html(b.html)这里shei与上面

绑定的参数有关系(重点)

案例:

  const express = require('express');

         varserver = express();

  server.use('/home',require('./r1.js')());       //绑定路由

server.use('/sing',require('./r2.js')());  //绑定路由

server.listen(8080);

建立俩个模板JS:

总结:建立俩个模板化JS用来分流;分别为r1.js    r2.js,

我们在绑定路由的  server.use('/sing',require('./r2.js')());   在网页上输入

http://localhost:8080 /sing/1.html

http://localhost:8080 /home/1.html

九.数据库  -------------npm  install mysql  数据插件

      语法:连接数据库:

      var db = mysql.createPool({IP地址,用户名,密码,数据库名字})

      1.曾:  INSERT     INTO 表名  VALUE()

            INSERT     INTO 表名 (KETS);(键值)

      2.删:DELETE    (KETS) 表名

            DELETE    FROM 表明  WHERE (KETS)

      3.改:UPDATE  表明  SET(value) 替换的内容

      4.查:  SELECT (KETS)(*)  FROM 表明  WHERE 

            SELECT(KETS)(*)  FROM 表明  WHERE  条件LEVEL


      案例:

          const  express =require('express');

const  mysql = require('mysql');   // 连接数据库

var server  = express();

const  db =  mysql.createPool({host:’localhost’,

user:’root’,password:’yangbaoxi789’,database:’lol’});

      server.use(‘/’ ,function(req,res){

曾:

db.query(`INSERT INTO 表单名 VALUES ( 表单key值),(err,data)=>{

  if(err){   res.status( 500 ).send( '服务器错误' ).end( ) }

  else{    console.log('插入成功了',data);   }

})

      删:

      db.query(`DELETE FROM 表单名WHEREid=3(key)`,(err,date)=>{

  if(err){  res.status( 500 ).send( '服务器错误' ).end( ) }

  else{   console.log('删除成功了',data);  }

})

改:

db.query(`UPDATE  表单名 SET username='lisi' (更改key = 内容)WHERE  id=1(在这个key内)`,(err,data)=>{

  if(err){   res.status( 500).send( '服务器错误' ).end( ) }

  else{    console.log('更改成功了',data);   }

})

查:   

// * 代表查询所有,还可以换成key

db.query(`SELECT  *  FROM 表单名` , (err,data)=>{

  if(err){   res.status( 500 ).send( '服务器错误' ).end( ) }

  else{    console.log('查询成功了',data);   }

})

 

})   //总结束语句


. 自定义模板:

自定义模板内容:

md5加密 :   --------------  crypto  加密模板

      语法:1.引入模块(插件)  

            2.创建加密对象  var obj = crypto.createHash('md5');

            3.obj.update('要加密的内容')   添加加密文字

            4.返回加密结果obj.digest('hex');  固定写法

      模拟: const crypto = require('crypto');     //系统自带加密插件

           var obj  = crypto.createHash('md5');   // 创建一个加密对象

           obj.update('123456'+'猪头');          // 添加要加密的文字

           var str  = obj.digest('hex');             // 返回加密后的结果

            console.log(str);

      案例: const common = require('./Libs/md5'); // 引入我们的模板

            var str = '123456';    // 要加密的内容

           var str = common.md5(common.MD5_SUFFIX+str); // 撒盐加密

           console.log(str);  

      时间戳:

           语法: var date = new Date();  // 创建一个时间对象

                 生成时间戳: date.getTime() //在控制台输出后

                 date.setTime()转换:(1495699678671)

                 将时间戳转变为可见的时间   有13位  跟10位

                 1. date.getFullYear()        年

                 2. date.getMonth()+1       月

                 3. date.getDate()              天

                 4. date.getHours()             时

                 5.date.getMinutes()     分

                 6. date.getSeconds()    秒

      模拟:function two(n) {   //  让不到十位数的数字成为十位数字

                 returnn<10?"0"+n:""+n;

}

var oDate = new Date();

oDate.setTime(1495699678671);  // 我们在控制台获取的时间戳

var str =oDate.getFullYear()+"-"+two(oDate.getMonth()+1)+"-"+two(oDate.getDate())+""+two(oDate.getHours())+":"+two(oDate.getMinutes())+":"+two(oDate.getSeconds());

console.log(str)

.  重定向:

      语法:重定向实现服务器内部页面的跳转

           在响应的时候  res. redirect(‘重定向的地址’)----/user   /login

           案例:const express = require('express');   //搭建服务器

var server = express();

var route = express.Router();  // 创建路由对象

route.use('/',function(req,res){ / 只要进入当前窗口就会被重定向

if(req.url  !=  ‘/’){

res.redirect('/login');

}else{

res.send('我是主页面');

res.end();

}

})

route.use('/login',function(req, res){

     res.send('我是被重定向的页面')

     res.end();

});

server.use('/', route);    // 绑定

server.listen(8080);

总结:执行js后,我们在网页输入http://localhost:8080 就会跳转到我们的主页面

当我们输入http://localhost:8080/wed(其他的网页路径时)会自动跳转到我们重定向的

网页http://localhost:8080/ login页面

十二 . 文本段落处理

      案例:const express = require('express');

const mysql =require('mysql');

constconsolidate = require('consolidate');

const ejs =require('ejs');

var server = express();

//配置模板引擎

server.set('view engine','html');

server.set('views','./temp');

server.engine('html',consolidate.ejs);

//连接服务器,

var db =mysql.createConnection({host:'localhost',user:'root', password:'yangbaoxi789',database:'student'});

server.use('/', function(req, res) {  // 服务器走起

//  通过查询获取数据库中的内容

db.query(`SELECT content FROMarticle_table WHERE id=1`, (err, data)=>{

   if (err) { res.status(500).send('database err').end();}   

   else { console.log(data[0].content); //[{content:'内容'}]

         // 这就是我们将文本处理段落问题

var str=data[0].content.replace(/^/gm,'<p>').replace(/$/gm,'</p>');  

  res.render('01.ejs',{name:str});     

         }

   })

})

server.listen(8080);




案例:  全面表单验证----post+路由分流+数据库

后台:

通过路由分流的JS(后台): ----这是自定义模板


前台:

总结:我们输入localhost8080/user或者localhost8080/1.html进入我们的登录界面,数据验证成功后跳转到我们的首页。








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值