热门标签 | 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页面
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

推荐阅读
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Windows 7 部署工具DISM学习(二)添加补丁的步骤详解
    本文详细介绍了在Windows 7系统中使用部署工具DISM添加补丁的步骤。首先需要将光驱中的安装文件复制到指定文件夹,并进行挂载。然后将需要的MSU补丁解压并集成到系统中。文章给出了具体的命令和操作步骤,帮助读者完成补丁的添加过程。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 本文介绍了在CentOS 6.4系统中更新源地址的方法,包括备份现有源文件、下载163源、修改文件名、更新列表和系统,并提供了相应的命令。 ... [详细]
  • 本文介绍了RxJava在Android开发中的广泛应用以及其在事件总线(Event Bus)实现中的使用方法。RxJava是一种基于观察者模式的异步java库,可以提高开发效率、降低维护成本。通过RxJava,开发者可以实现事件的异步处理和链式操作。对于已经具备RxJava基础的开发者来说,本文将详细介绍如何利用RxJava实现事件总线,并提供了使用建议。 ... [详细]
  • 本文讲述了如何通过代码在Android中更改Recycler视图项的背景颜色。通过在onBindViewHolder方法中设置条件判断,可以实现根据条件改变背景颜色的效果。同时,还介绍了如何修改底部边框颜色以及提供了RecyclerView Fragment layout.xml和项目布局文件的示例代码。 ... [详细]
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社区 版权所有