NodeJS,EXpress框架的一知半解

一,什么是nodejs

node.js是一个基于chrome V8引擎的JavaScript运行环境 (node.js并不是一门新的语言)

二。node.js的特点

1.事件驱动
2.非阻塞I/O
3.单线程
4.不能利用多核CPU的优势
什么是非阻塞I/O?
就好比在一条马路上车子都并排的向前开如果前面的车子停下来了不继续向前则会造成堵车后面的车子无法继续走了这就是阻塞io,而非阻塞io就是如果前面车子停下来了后面的车子就绕开它走不影响继续向前

三。node.js模块

node.js模块总共分为三种类型
1.nodejs内置模块,如fs模块,http模块
2.第三方模块,在npm等论坛上程序员大佬编写的模块
3.自定义模块,在实际业务中根据需求所写的模块

四。常用内置模块

1.URL模块
2.fs模块
3.path模块
4.http模块
stream模块

五。用node.js原生API搭建一个服务器

首先先聊一下什么是服务器
服务器指的是提供服务的程序或者设备,他的功能有接收并处理请求,处理并响应数据信息
主要功能:

  • 接收客户端请求
  • 处理请求
  • 响应请求
    接下来就是项目环节
    使用的插件:nodemon(用于代码实时编辑完刷新的工具),
    项目需求描述:使用node.js原生代码实现,图片,HTML/CSS/JS文件的访问
    原理:根据req.url来区分客户的请求路径,根据不同的访问路径响应不同的内容
var http = require('http')//引入http模块
var fs = require('fs')//需要操作文件因此引入fs模块
var path = require('path')//路径模块
var express = require('express')
var server = http.createServer(function(req,res)){ //创建一个web服务器
    var url = req.url
    //favicon.ico
    if(url !='/favaicon.ico'){//由于没favacion控制台会报404所以在这里做个判断
        //url路径处理 当用户直接访问根路径时直接跳转到index.html
        url = url ==='/''/index.html':url
        var filePath = path.join(__dirname,'/public'+url)
        //判断传入的是否是文件
        fs.stat(fliePath,function(err,stats){
            //报错文件不存在时
            if(err||!stats){
                res.writeHead(404,{'Content-Type':'text/plain;charset=utf-8;'})
                res.end('文件不存在')
            }
            //如果是一个文件那就读取文件响应到客户端
            if(stats&&stats.isFile()){
                res.statusCode = 200  //浏览器的状态码
                res.setHeader('Content-text','text/plain')
                //读取文件,响应给客户端
                fs.createReadStream(filePath).pipe(res)//管道流传入客户端
            }
        })
    }
}
//添加一个端口监听
server.listen(8000,function(){
    console.log('server is running on 8000')
})

npm包管理器

  • npm是啥?
  1. npm 是基于commonJS规范的包管理工具
    在node.js的安装中,npm也跟着同步安装
  • npm能干啥?
    1.便于模块化管理
  1. 便于代码转移
    3.能安装模块
    4.package.json能记录开发的依赖模块
    1.全局安装 npm 所需要下载的模块 -g
    2.本地安装 :npm 所需要下载的模块 -S (程序上线之后也依赖的包)
    npm 所需要下载的模块 -D(仅项目开发环节需要使用后续上线用不上)
    npm init
    执行npm init之后会在项目的根目录生成一个package.json文件用来记录项目所需要的各自依赖包

Express框架的使用

  1. 使用Express的脚手架工具express-generator搭建项目
    使用npm安装
npm install express-generator -g

如下命令创建了一个名称为 myapp 的 Express 应用。此应用将在当前目录下的 myapp 目录中创建,并且设置为使用 Pug 模板引擎

$ express --view=pug myapp
create : myapp
   create : myapp/package.json
   create : myapp/app.js
   create : myapp/public
   create : myapp/public/javascripts
   create : myapp/public/images
   create : myapp/routes
   create : myapp/routes/index.js
   create : myapp/routes/users.js
   create : myapp/public/stylesheets
   create : myapp/public/stylesheets/style.css
   create : myapp/views
   create : myapp/views/index.pug
   create : myapp/views/layout.pug
   create : myapp/views/error.pug
   create : myapp/bin
   create : myapp/bin/www

项目结构详解
(1)package.json文件详解
body-parser 用于解析HTTP请求体中的body数据
cookie-parser 用于解析cookie会话数据
ejs 页面模块
morgan 是一个日志工具
serve-favicon 用于设置网站的favicon

(2) /bin/www 入口文件详解
	端口号设置
	服务启动时的事件监听onError / onListen
	
(3)app.js文件详解
	中间件:next()表示交给下一个中间件处理
	路由配置:res.render('index', {})渲染index模板引擎
	模块引擎的配置
	express.static(),设置静态资源目录
	bodyParser中间件,用于处理form表单默认的 application/x-www-form-urlencoded 数据编码
	cookieParser中间件,用于解析cookie数据
	404中间件,渲染error模板引擎
	
(4)路由详解
	不能两次调用 res.send()
	向前端发送文件
		res.sendFile(__dirname+'form.html')
	如何定义一个路由?
		router.get('/xxx',function(req,res,next){})
		router.post('/xxx',function(req,res,next){})
		同时支持GET/POST:
		router.all('/xxx', function(req,res,next){})
		路由可以使用正则表达式
		router.get('/ab*cd', fn)
		
(5)ejs模板引擎详解
	结合ejs官网,介绍什么是ejs?
	常用标签介绍(在代码中演示一下这些标签的用法):
		<% %>  流程控制标签,用于包裹js代码
		<%= %> 直接输出值,不对“值”执行解析
		<%- %> 输出值,会对“值”中的HTML进行解析
		<%# %> 注释标签
		% 对特殊符号进行转义,如 %%
		<%- include('head', data) %>
	express渲染ejs的语法:
		res.render('ejs', data, options)
  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 答:以下是一个完整的nodejs express框架代码:const express = require('express'); const app = express();app.get('/', (req, res) => { res.send('Hello World!'); });app.listen(3000, () => { console.log('Server is listening on port 3000'); }); ### 回答2: Node.js是一个运行在服务器端的 JavaScript 运行环境,而Express则是基于Node.js的一个简洁、灵活的Web应用框架,下面是一个完整的Node.js Express框架的代码示例: 首先,确保你已经安装了Node.js和npm包管理器。然后创建一个新的文件夹并打开终端(命令行窗口),将该文件夹作为工作目录。 1. 初始化项目: 在终端中运行以下命令来初始化一个新的Node.js项目: ``` npm init ``` 按照提示,依次输入项目名称、版本等信息。 2. 安装依赖: 接下来,安装Express框架和其它所需的依赖。 ``` npm install express ``` 3. 创建主文件: 在项目文件夹中创建一个名为`app.js`的文件,并输入以下代码: ```javascript const express = require('express'); const app = express(); // 定义路由 app.get('/', (req, res) => { res.send('Hello World!'); }); // 监听端口 const port = 3000; app.listen(port, () => { console.log(`Server is running on port ${port}`); }); ``` 4. 运行应用: 在终端中输入以下命令来运行应用: ``` node app.js ``` 此时,服务器将在本地的3000端口上启动。 现在,你可以在浏览器中访问`http://localhost:3000`,显示"Hello World!"。 这只是一个简单的示例,你可以根据需要添加更多的路由和功能。你还可以使用`npm`安装和使用其他插件和中间件,以满足你的需求。 希望这个简单的示例对你有所帮助。请注意,在实际使用中,你可能需要更多的配置和安全性措施。 ### 回答3: 下面是一个完整的Node.js Express框架代码示例: ```javascript // 引入所需的库 const express = require('express'); const app = express(); // 中间件设置 app.use(express.json()); // 解析JSON请求体 app.use(express.urlencoded({ extended: false })); // 解析URL编码请求体 // 路由定义 app.get('/', (req, res) => { res.send('Hello World!'); }); // 启动服务器 const port = 3000; app.listen(port, () => { console.log(`服务器已启动,正在监听端口 ${port}`); }); ``` 上述代码展示了一个基本的Node.js Express框架。它首先引入`express`库并创建一个应用实例。接下来,使用`app.use`来配置所需的中间件。在这个例子中,我们使用了两个常用的中间件:`express.json()`用于解析JSON请求体,`express.urlencoded()`用于解析URL编码请求体。 然后,我们定义了一个根路径的GET请求处理程序,当浏览器请求根路径时,服务器返回"Hello World!"。 最后,使用`app.listen`方法启动服务器并开始监听在指定的端口上(在此示例中是3000端口)。 要运行以上代码,需要在你的Node.js环境中安装`express`库,可以在终端中运行`npm install express`命令进行安装。 当你运行该代码时,你将看到终端输出`服务器已启动,正在监听端口3000`。这表示你的服务器已经成功启动,并且可以在浏览器中访问`http://localhost:3000`来查看"Hello World!"的响应。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值