node基础应用

node基础应用

APIart-templatexpressmongoDB

1.概念

1.Node.js 基于javascript开发,运行在服务端。
2.事件驱动、非阻塞I/O
3.基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。

2.实操

2.1 安装 node

node 官网
检查是否安装成功
node -v /--version

2.2 简单使用

1.node和浏览器一样可以执行js文件

  cmd 打开命令窗口 在终端输入 ` node 文件名.js `
  1. 读/写文件(fs)

  2. 搭建web服务

2.3 客户端渲染与服务端渲染

2.3.1 什么是客户端渲染和服务端(SSR )?

    两者本质的区别在于究竟谁来完成html的拼接工作,如果是在服务器端完成的,然后返回给客户端,就是服务器端渲染,而如果是前端做了更多的工作完成了html的拼接,则就是客户端渲染。

2.3.2 优点和缺点

服务端渲染优点:

1. 浏览器打开页面耗时少。因为后端已经拼接完html和数据,浏览器直接解析dom就行。

2. 有利于SEO的优化。

3. 后台生成静态文件,对于那些数据变化少的页面来说,可以生成缓存片段,这样就减少了数据库查询时间和渲染时间,直接从缓存获取即可。

服务端渲染缺点:

1.不利于前后端分离,开发效率慢。

2. 占用服务器资源增多;

客户端渲染优点:

1. 前后端分离,开发效率加快,前端只专注于ui的设计,后端只专注于后端的业务逻辑开发。

2. 用户体验加强,可以做成spa,无刷新获取数据$ajax

客户端渲染缺点:

1. 前端页面渲染时间较长,需要先请求数据再加载页面。

2. 不利于SEO

总结: 现在的页面都是交叉做的,对于重要信息可以服务端渲染出来,对于不重要的可以通过js 获取数据渲染

2.4 node 核心模块
  • fs(文件系统)

异步地读取文件的全部内容。

fs.readFile('文件路径',function(err,data){
if(err) throw err;
console.log(data)
});

异步地写入文件

fs.writeFile('文件路径','node 学习','utf8',function(err,data){
});

异步的复制文件

fs.copyFile('源文件.txt', '目标文件.txt', (err) => {
 if (err) throw err;
 console.log('源文件已拷贝到目标文件');
});


  • path(路径)

返回当前文件的文件名

path.basename('/url/index.html') // 返回 index.html

path.basename('/url/index.html','.html') //返回 index

返回当前文件所在的目录

path.dirname('/url/index/script.js') //返回 /url/index

返回当前文件的扩展名

path.extname('/url/index/script.js') //返回  .js

将字符串拼接起来 返回文件目录 路径

path.join('foo','index','sdfk/sine','aske','..')  //返回 foo/index/sdfk/sine

返回一个对象{root,dir,base,ext,name}

path.parse('/home/user/dir/file.txt')  //返回 {root:'/',dir:'/home/user/dir',base:'file.txt',ext:'.txt',name:'file'}

将路径或路径片段的序列解析为绝对路径

path.resolve('/a','./b','c')  //返回 /a/b/c 
  • module(模块)

exports  和 module.exports  (暴露)

exports.f = function(){}

module.exports  = function(){}
  • http(服务)

创建服务器

http.creatServer(function(req,res){})   //返回http.server 实例
      .listen(3000,function(){
      console.log('开启服务')
      })
 
 响应api   
 
 res.statusCode =  '404' // 发送状态码
 
 res.setHeader('content-type','text/plain') //设置请求头
 
 res.write('发送的客户端的内容','utf8',function(err,data){
 }) // 响应数据
 
 res.end() //结束响应

简单案例

//第一步加载核心模块 http
 var http = require('http')
 //第二步 创建http服务
 var server =  http.createServer();
 //第三步 监听请求的api
 server.on('request',function(req,res){
 var url = req.url; // 获取请求的路径 /
 res.setHeader('content-type','text/html;charset=utf-8')
 //路由设计
 if(url == '/login'){
 res.end('登录页')
 }else if(url == '/register'){
 res.end('注册页')
 }else{
  res.end('404页面')
 }
 })
 // 第四步 监听路径 端口号
 server.listen(3000,function(){
 console.log('服务已启动')
 })
2.5 异步编程

注 : 要有异步编程的思想

  • 回调函数

     概念:回调函数就是传递一个参数化的函数,就是将这个函数作为一个参数传到另一个主函数里面,当那一个主函数执行完之后,再执行传进去的作为参数的函数。走这个过程的参数化的函数 就叫做回调函数。换个说法也就是被作为参数传递到另一个函数(主函数)的那个函数就叫做 回调函数。
    

    例子:

    f1()  // f1 是一个很耗时的函数
    f2()
    //重新更改f1的代码 加一些异步操作
    function  f1(callback){
    setTimeout(function(){
    callback()
    },1000);
    //下面是执行f1之前的代码
    }
    f1(f2)
    
    

    应用场景
    解决一些异步操作,例如从一个异步中拿到数据。

  1. function f1(callback){ 
  2. setTimeout(()=>{ 
  3. for( i = 0; i < 10; i++){ 
  4. callback(i) 

  5. },1000) 

  6.  
  7. f1(function(data){ 
  8. console.log(data) 
  9. }) 
  10.  
  1. promise

2.6 封装
概念:所谓封装,就是把相同的代码抽离出来封装成一个盒子(类);
特性:可复用,可维护,代码逻辑简洁明了

node里面独立模块(包含封装的概念)

所谓模块化,也是独立文件,职责比较单一,有点像是各司其职,各司其责的概念;

任何代码业务逻辑,必定少不了封装,你是一个资深工程师,必定少不了封装


3. express

概念:Express 是一个保持最小规模的灵活的 Node.js Web 应用程序开发框架,为 Web 和移动应用程序提供一组强大的功。(把原生的http服务给封装了一下同时又扩展很多功能)
安装:
`$ npm install express --save`
  1. //引入核心模块 
  2. var express = require('express') 
  3. // 创建服务 
  4. var server = express() 
  5. //监听路由 
  6. server.get('/login',function(req,res){ 
  7. req.query  
  8. }) 
  9. // 监听端口 
  10. server.listen(8000,function(){ 
  11. console.log('开启服务') 
  12. }) 
  13.  
  14.  
3.1所包含的几个核心概念
  1. 监听路由的方法

  1. get post put delete all 
  1. 匹配路径的方式

  1. // 字符串、正则 ,字符?,+,*,和() 按正则表达式处理  
  2. // /ab?cd /ab+cd /ab*cd /a/ 
  3. app.get('/about', function (req, res) {  
  4. res.send('about') 
  5. }) 

3.响应的方法

  1. //res下表中响应对象()的方法可以向客户端发送响应,并终止请求 - 响应周期。如果没有从路由处理程序调用这些方法,则客户端请求将保持挂起状态。 
  2. res.end() //结束响应 
  3. res.json() //发送json 数据 
  4. res.jsonp() //使用jsonp支持发送json格式 
  5. res.redirect() //重定向 
  6. res.render() //渲染视图模板 
  7. res.send() //发送各种类型的数据 
  8. res.sendFile()//发送文件  
  9. res.sendStatus(404) // 发送状态码 
  10. res.sendStatus(200); // equivalent to res.status(200).send('OK') 
  11. res.sendStatus(403); // equivalent to res.status(403).send('Forbidden') 
  12. res.sendStatus(404); // equivalent to res.status(404).send('Not Found') 
  13. res.sendStatus(500); // equivalent to res.status(500).send('Internal Server Error') 
  14. res.set() // 设置请求头 
  15. res.status(404) // 设置响应的HTTP状态 
  16. res.type()//将Content-TypeHTTP标头设置为由mime.lookup()为指定的MIME类型确定的MIME类型 type。如果type包含“/”字符,则将其设置Content-Type为type。 
  17. res.type('.html'); // => 'text/html' 
  18. res.type('html'); // => 'text/html' 
  19. res.type('json'); // => 'application/json' 
  20. res.type('application/json'); // => 'application/json' 
  21. res.type('png'); // => image/png: 
  1. 路由设计

  1. var router = express.router() 
  2. router.all('/',function(req,res){ }) // get put delete post 
  1. 使用模板引擎

  1. app.set('views', __dirname + '/views');// 设置视图模板文件夹 
  2. app.set('view engine', 'jade'); 
  3. app.set('view engine', 'pug') //给express 设置对应模板引擎 
  4. app.engine('art', require('express-art-template')); 
  1. 使用静态资源

  1. app.use( express.static(__dirname + '/static')); // 访问的是根目录 ‘/’ 
  2. app.use('/', express.static(__dirname + '/static')); 
  3. app.use('/public', express.static(__dirname + '/public')); 

原文地址:https://www.cnblogs.com/wangshuai33/p/11018880.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


根据官网 入门 express
java叫接口control什么的app.get.post等等都是请求方式我们可以在游览器输入localhost端口/或者在Apifox里面写。
为了前端丢进去的时候可以直接判断中间件就是经过了这个就会被使用可以做一些自己的数据处理什么的。
Express 文件的上传和下载
运行命令下载app.js 增加中间件。
基本模板来的 后面用后就有什么加什么都行。
此篇完成 增删 刷新文件 的基本操作
最基本的创建 以及 添加了其他的一些插件 登录接口和四个接口
由于每个接口都要放就很麻烦 所以做个中间件
1importre234defstrip_operate(exp):#合并多余的操作符5exp=exp.replace("+-","-")6exp=exp.replace("--","+")7returnexp8910defcal_exp_son(exp_son):#计算两数的乘除11if&
 socket.html<script>//高级api不兼容socket.io//http单向的,socket是双向的,传输都靠tcpletsocket=newWebSocket('ws://localhost:3000')socket.onopen=()=>{//多个页面通信就是先发给服务器,服务器再发给另一个页面socket.send('我
M模式:类,表示数据的应用程序和使用验证逻辑以强制实施针对这些数据的业务规则。V视图:应用程序使用动态生成HTML响应的模板文件。C控制器:处理传入的浏览器请求的类中检索模型数据,然后指定将响应返回到浏览器的视图模板。简单练习: 1、添加ControllerHelloWorldControlle
在Node开发中免不了要使用框架,比如express、koa、koa2拿使用的最多的express来举例子开发中肯定会用到很多类似于下面的这种代码varexpress=require('express');varapp=express();app.listen(3000,function(){console.log('listen3000...');});app.use(middle
node的http创建服务与利用Express框架有何不同原生http模块与使用express框架对比:consthttp=require("http");letserver=http.createServer(function(req,res){//服务器收到浏览器web请求后,打印一句话console.log("recvreqfrombrowser");
编辑nginx文件vi/usr/local/etcginxginx.confnginx配置如下,配置后需重启nginxnginx-sreloadlocation~.*\.json{roothtml;add_header"Access-Control-Allow-Origin""*";}前端index.html<script>fetch('http://localhost:12
constexpress=require('express')constapp=express()//步骤的拆解constresult=express.static('./views')app.use(result)//再次托管一下样式表的资源目录app.use('/css',express.static('./css'))//托管JS文件目录app.use('/js&#
问题描述:最近在做毕设,express里边的中间件(body-parser)失效,req.body获取不到任何值,req.query能获取到值。一开始加body-parser中间件是有用的,直到昨天加了token之后,body-parser失效。试着把token去掉,无济于事,也不是这个问题,也有说版本对不上的,换了中间件的引入方法,还是没用!!! 后
express官网:---->传送门 expressexpress框架有许多功能,比如路由配置,中间件,对于想配置服务器的前端来说,非常便捷自从node发展之后,基于nodejs的开发框架也不断涌现出来,express就是其中之一,最近简单的写了点express框架的简单的处理请求的demo首先是安装express模块npminstall
目录问题: 操作:Win+S按键,输入“事件查看器”问题详情:模块DLLC:\ProgramFiles(x86)\IISExpress\aspnetcore.dll未能加载。返回的数据为错误信息。问题:  操作:Win+S按键,输入“事件查看器” 问题详情:模块DLLC:\ProgramFiles(x86)\IISExpress\aspnetcore.dll
//获取阿里云市场,快递物流记录https://market.aliyun.com/products/56928004/cmapi022273.html?spm=5176.2020520132.101.26.61f97218v18GBF#sku=yuncode1627300000//get_express_log(self::$config['web']['aliyun_AppCode']阿里云市场AppCode,缓存秒数如300秒,'快递公司代