热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

十分钟入门Express(reactexpressstarter)

什么是Express?Node本身并不支持其它常见的web开发任务。如果需要进行一些具体的处理,比如运行其它HTTP动词(比如GET、POST、DEL

什么是 Express?

Node 本身并不支持其它常见的 web 开发任务。如果需要进行一些具体的处理,比如运行其它 HTTP 动词(比如 GET、POST、DELETE 等)、分别处理不同 URL 路径的请求(“路由”)、托管静态文件,或用模板来动态创建响应,那么可能就要自己编写代码了,亦或使用 web 框架,以避免重新发明轮子。

Express 是最流行Node 框架,是许多其它流行 Node 框架 的底层库。它提供了以下机制:

  • 为不同 URL 路径中使用不同 HTTP 动词的请求(路由)编写处理程序。
    集成了“视图”渲染引擎,以便通过将数据插入模板来生成响应。
  • 设置常见 web 应用设置,比如用于连接的端口,以及渲染响应模板的位置。
  • 在请求处理管道的任何位置添加额外的请求处理“中间件”。

虽然 Express 本身是极简风格的,但是开发人员通过创建各类兼容的中间件包解决了几乎所有的 web 开发问题。这些库可以实现 COOKIE、会话、用户登录、URL 参数、POST 数据、安全头等功能。可在 Express 中间件 网页中找到由 Express 团队维护的中间件软件包列表(还有一张流行的第三方软件包列表)。

Express 应用程序生成器

通过应用生成器工具 express-generator 可以快速创建一个应用的骨架。

express-generator 包含了 express 命令行工具。通过如下命令即可安装:

$ npm install express-generator -g

如下命令express --view=pug react-express-starter创建了一个名称为 react-express-starter 的 Express 应用。此应用将在当前目录下的 react-express-starter 目录中创建,并且设置为使用 Pug 模板引擎(view engine):

$ express --view=pug react-express-startercreate : react-express-starter\create : react-express-starter\public\create : react-express-starter\public\Javascripts\create : react-express-starter\public\images\create : react-express-starter\public\stylesheets\create : react-express-starter\public\stylesheets\style.csscreate : react-express-starter\routes\create : react-express-starter\routes\index.jscreate : react-express-starter\routes\users.jscreate : react-express-starter\views\create : react-express-starter\views\error.pugcreate : react-express-starter\views\index.pugcreate : react-express-starter\views\layout.pugcreate : react-express-starter\app.jscreate : react-express-starter\package.jsoncreate : react-express-starter\bin\create : react-express-starter\bin\wwwchange directory:> cd react-express-starterinstall dependencies:> npm installrun the app:> SET DEBUG=react-express-starter:* & npm start

-h 参数可以列出所有可用的命令行参数:

$ express -hUsage: express [options] [dir]Options:-h, --help 输出使用方法--version 输出版本号-e, --ejs 添加对 ejs 模板引擎的支持--hbs 添加对 handlebars 模板引擎的支持--pug 添加对 pug 模板引擎的支持-H, --hogan 添加对 hogan.js 模板引擎的支持--no-view 创建不带视图引擎的项目-v, --view <engine> 添加对视图引擎&#xff08;view&#xff09; <engine> 的支持 (ejs|hbs|hjs|jade|pug|twig|vash) &#xff08;默认是 jade 模板引擎&#xff09;-c, --css <engine> 添加样式表引擎 <engine> 的支持 (less|stylus|compass|sass) &#xff08;默认是普通的 css 文件&#xff09;--git 添加 .gitignore-f, --force 强制在非空目录下创建

然后安装所有依赖包&#xff1a;

$ cd myapp
$ npm install

然后运行项目,在浏览器中打开 http://localhost:3000/ 网址就可以看到这个应用了。

npm start

*.通过生成器创建的应用一般都有如下目录结构&#xff1a;

├── app.js
├── bin
│ └── www
├── package.json
├── public
│ ├── images
│ ├── Javascripts
│ └── stylesheets
│ └── style.css
├── routes
│ ├── index.js
│ └── users.js
└── views├── error.pug├── index.pug└── layout.pug

app.js

这里作为一个总控台,控制着nodejs/react/express等的内容,请简单阅读一下,并留意中文备注部分.

var createError &#61; require(&#39;http-errors&#39;);
var express &#61; require(&#39;express&#39;);
var path &#61; require(&#39;path&#39;);
var COOKIEParser &#61; require(&#39;COOKIE-parser&#39;);
var logger &#61; require(&#39;morgan&#39;);var indexRouter &#61; require(&#39;./routes/index&#39;);
var usersRouter &#61; require(&#39;./routes/users&#39;);var app &#61; express();//by zhengkai.blog.csdn.net
// view engine setup ,这里设置了view engine,读取view文件夹,后缀.pug
app.set(&#39;views&#39;, path.join(__dirname, &#39;views&#39;));
app.set(&#39;view engine&#39;, &#39;pug&#39;);app.use(logger(&#39;dev&#39;));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(COOKIEParser());
//这里配置的是staic静态资源,不走路由的
app.use(express.static(path.join(__dirname, &#39;public&#39;)));//这里注册了需要走路由的URL
app.use(&#39;/&#39;, indexRouter);
app.use(&#39;/users&#39;, usersRouter);//配置404错误
// catch 404 and forward to error handler
app.use(function(req, res, next) {next(createError(404));
});// error handler
app.use(function(err, req, res, next) {// set locals, only providing error in developmentres.locals.message &#61; err.message;res.locals.error &#61; req.app.get(&#39;env&#39;) &#61;&#61;&#61; &#39;development&#39; ? err : {};// render the error pageres.status(err.status || 500);res.render(&#39;error&#39;);
});module.exports &#61; app;

一些修改

照搬demo?不存在的,打开index.pug文件,开始你的self-helloworld

extends layoutblock contenth1&#61; titlep Welcome to #{title} Worldp #{blog} and you are learning #{title}

res.render(&#39;index&#39;, { title: &#39;Express&#39; });这句话就可以看出奥秘了把,

  • 第一个参数&#39;index&#39;是URL地址,因为配置了view的path所以这里只要render出去就对应index.pug页面.
  • 页面里的#{blog}#{title}对应render的第二个参数{ title: &#39;Express&#39;,blog:&#39;zhengkai.blog.csdn.net&#39; }的值.

var express &#61; require(&#39;express&#39;);
var router &#61; express.Router();/* GET home page. */
router.get(&#39;/&#39;, function(req, res, next) {res.render(&#39;index&#39;, { title: &#39;Express&#39;,blog:&#39;zhengkai.blog.csdn.net&#39; });
});module.exports &#61; router;

基本路由baseRouter

路由用于确定应用程序如何响应对特定端点的客户机请求&#xff0c;包含一个 URI&#xff08;或路径&#xff09;和一个特定的 HTTP 请求方法&#xff08;GET、POST 等&#xff09;。

每个路由可以具有一个或多个处理程序函数&#xff0c;这些函数在路由匹配时执行。

路由定义采用以下结构&#xff1a;

app.METHOD(PATH, HANDLER)


  • app 是 express 的实例(express.Router)。
  • METHOD 是 HTTP 请求方法,请注意是小写的。
  • PATH 是服务器上的路径,就是访问URL。
  • HANDLER 是在路由匹配时执行的函数。

ShowTime


  • http://localhost:3000/ 可以看到刚才修改的页面
  • http://localhost:3000/users 可以看到返回的简单string
  • http://localhost:3000/404 或者其他不存在的页面,可以看到返回统一的404页面
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

推荐阅读
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • Java EE 平台集成了多种服务、API 和协议,旨在支持基于 Web 的多层应用程序开发。本文将详细介绍 Java EE 中的 13 种关键技术规范,帮助开发者更好地理解和应用这些技术。 ... [详细]
  • vue引入echarts地图的四种方式
    一、vue中引入echart1、安装echarts:npminstallecharts--save2、在main.js文件中引入echarts实例:  Vue.prototype.$echartsecharts3、在需要用到echart图形的vue文件中引入:   importechartsfrom&amp;quot;echarts&amp;quot;;4、如果用到map(地图),还 ... [详细]
  • iOS snow animation
    CTSnowAnimationView.hCTMyCtripCreatedbyalexon1614.Copyright©2016年ctrip.Allrightsreserved.# ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • 用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
    HTTP协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的HTTP的网站是不 ... [详细]
  • 短视频app源码,Android开发底部滑出菜单首先依赖三方库implementationandroidx.appcompat:appcompat:1.2.0im ... [详细]
  • centos 7.0 lnmp成功安装过程(很乱)
    下载nginx[rootlocalhostsrc]#wgethttp:nginx.orgdownloadnginx-1.7.9.tar.gz--2015-01-2412:55:2 ... [详细]
  • 本文探讨了 TypeScript 中泛型的重要性和应用场景,通过多个实例详细解析了泛型如何提升代码的复用性和类型安全性。 ... [详细]
  • packagecom.panchan.tsmese.utils;importjava.lang.reflect.ParameterizedType;importjava.lang. ... [详细]
  • 本文详细介绍了Java反射机制的基本概念、获取Class对象的方法、反射的主要功能及其在实际开发中的应用。通过具体示例,帮助读者更好地理解和使用Java反射。 ... [详细]
  • 本文详细介绍了如何在Linux系统(以CentOS为例)上彻底卸载Zimbra邮件系统,包括停止服务、删除文件和用户等步骤。 ... [详细]
  • Spring – Bean Life Cycle
    Spring – Bean Life Cycle ... [详细]
author-avatar
但须g婚后
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有