Express 教程 01 - 入门教程之经典的Hello World
目录:
前言:
本篇文章是建立在Node.js基础之上的,所以读者需要有一点Node.js基础的了解。
演示我是按照Windows操作系统来的了。Linux的其实命令都差不多,大家应该也可以发现。
我也是刚学这个,所以很多东西都是我从各大网站上照的,然后附上了我的实践操作及自己的说明吧。
有什么错误,希望大家及时指明,也请大家见谅。。
一、Express?纳尼?!
Express 是一个简洁而灵活的 Node.js Web应用框架, 提供一系列强大特性帮助你创建各种Web应用。Express 不对 node.js 已有的特性进行二次抽象,我们只是在它之上扩展了Web应用所需的功能。丰富的HTTP工具以及来自Connect框架的中间件随取随用,创建强健、友好的API变得快速又简单。
二、开始前的准备工作
步骤1:首先,我们需要在自己的磁盘分区中,新建一个文件夹,后面我们的所有操作都将在这个文件夹中进行。
在这里,我以我的D盘做演示。
运行cmd、启动DOS,输入“D:”回车切换到D盘,然后运行“mkdir NodejsDemo”新建一个名为“NodejsDemo”的文件夹:
步骤2:在这个文件夹中,我们必须得创建一个“应用程序包文件”,它类似于.NET中的package.json,用于NuGet管理文件版本用的。
在我们的Express里面呢,我们也需要创建package.json这个文件,它和其他的Node程序包是一样的,在里面Express作为一个依赖。
你也可以使用 npm info express version 来获取express最新版本号,最好使用最新的版本号,这样新出的功能就不会让你感觉到奇怪了:
OK,得知目前最新的Express版本号为4.12.2,接下来我们就可以创建package.json这个包文件了。
package.json文件代码如下:
{ "name": "NodejsDemo", "description": "Hello World test app.", "version": "0.0.1", "private": true, "dependencies": { "express": "3.x" } }
步骤3:现在我们的package.json文件已经准备就绪了,下面我们就可以使用npm(1)来安装依赖项,这里的依赖项仅是Express。
运行 cd NodejsDemo 进入我们的项目目录,这里也就是我们最开始新建的,也是package.json所在的NodejsDemo文件夹:
步骤4:然后,我们运行 npm install 命令,安装package.json中声明的依赖项:
步骤5:当npm完成后,Express 4.12.2和它的依赖项就安装到你的"./node_modules"目录里了。
你可以通过运行 npm ls 命令来确认一下,它会把Express和它的依赖展示成下面的树形结构:
三、测试安装之经典的Hello World
第一段中,我们的Express已经安装完成了,下面,我们要来写真正的代码了,也算是测试安装结果吧。
步骤1:在D:\NodejsDemo,也就是上面我们创建的那个目录中,创建一个js文件:man.js,作为我们的主程序。
main.js代码如下:
var express = require('express') var app = express() app.get('/', function (request, response) { response.send('Hello World') }) var server = app.listen(3000, function() { console.log('Listening on port %d', server.address().port); });
上述代码中,我们首先引入express模块,然后使用express()创建一个新的应用程序。
在这个应用程序实例里,你可以通过 app.VERB() 定义路由,上面的例子是"GET /"返回 "Hello World" 字符串。
request和 response 对象是和node原生提供给你的一致的,你也可以执行 response.pipe() , request.on('data', callback) 等任何事情在没有Express的情况下可以做的事情。
然后,我们使用express对象封装好的方法 response.send() ,它会返回指定字符串,并且设置Content-Length。
最后,我们启动监听3000,并且输出当前的监听信息。
步骤2:运行cmd,启动DOS,进入该项目目录,运行命令“node main”:
步骤3:打开浏览器,访问:http://127.0.0.1:3000:
啊啊啊,每次看到这两个单词,都好激动有木有。。。。。。
四、使用express(1) 来生成一个应用程序
Express团队维护了一个可以快速生成项目模板的可执行文件,这里命名为express(1)。
如果您使用npm安装全局的express-generator,那么在你的机器任何位置它都可以被访问。
步骤1:运行cmd进入DOS,切换到D盘,运行命令 npm install -g express-generator ,-g表示global全局的。效果如下:
步骤2:这个工具提供了一个非常简单的生成一个程序骨架的功能。但是他也是有局限性的,比如它只支持很少的几个模板引擎。
而事实上Express几乎支持所有的为Node所建的模板引擎。使用 express --help 查看一下帮助:
步骤3:如果你想生成一个Jade,Stylus的应用程序,你只需要简单的执行下面的命令即可: express --session --css stylus --ejs myapp
然后,它就会在我们的D盘中新建了一个myapp的站点,结构如下:
D:\MYAPP │ app.js │ package.json │ ├─bin │ www │ ├─public │ ├─images │ ├─javascripts │ └─stylesheets │ style.styl │ ├─routes │ index.js │ users.js │ └─views error.ejs index.ejs
步骤4:和其他Node程序一样,你必须添加项目依赖:
D:\> cd myapp D:\myapp> npm install
D:\>cd myapp D:\myapp>npm install cookie-parser@1.3.4 node_modules\cookie-parser ├── cookie@0.1.2 └── cookie-signature@1.0.6 ejs@2.3.1 node_modules\ejs debug@2.1.2 node_modules\debug └── ms@0.7.0 morgan@1.5.1 node_modules\morgan ├── basic-auth@1.0.0 ├── depd@1.0.0 └── on-finished@2.2.0 (ee-first@1.1.0) serve-favicon@2.2.0 node_modules\serve-favicon ├── fresh@0.2.4 ├── ms@0.7.0 ├── parseurl@1.3.0 └── etag@1.5.1 (crc@3.2.1) express@4.12.2 node_modules\express ├── merge-descriptors@1.0.0 ├── cookie-signature@1.0.6 ├── utils-merge@1.0.0 ├── cookie@0.1.2 ├── fresh@0.2.4 ├── methods@1.1.1 ├── range-parser@1.0.2 ├── escape-html@1.0.1 ├── content-type@1.0.1 ├── vary@1.0.0 ├── finalhandler@0.3.3 ├── parseurl@1.3.0 ├── serve-static@1.9.1 ├── content-disposition@0.5.0 ├── path-to-regexp@0.1.3 ├── depd@1.0.0 ├── qs@2.3.3 ├── on-finished@2.2.0 (ee-first@1.1.0) ├── etag@1.5.1 (crc@3.2.1) ├── send@0.12.1 (destroy@1.0.3, ms@0.7.0, mime@1.3.4) ├── proxy-addr@1.0.6 (forwarded@0.1.0, ipaddr.js@0.1.8) ├── accepts@1.2.4 (negotiator@0.5.1, mime-types@2.0.9) └── type-is@1.6.0 (media-typer@0.3.0, mime-types@2.0.9) body-parser@1.12.0 node_modules\body-parser ├── content-type@1.0.1 ├── raw-body@1.3.3 ├── bytes@1.0.0 ├── depd@1.0.0 ├── qs@2.3.3 ├── on-finished@2.2.0 (ee-first@1.1.0) ├── iconv-lite@0.4.7 └── type-is@1.6.0 (media-typer@0.3.0, mime-types@2.0.9) stylus@0.42.3 node_modules\stylus ├── css-parse@1.7.0 ├── mkdirp@0.3.5 ├── sax@0.5.8 └── glob@3.2.11 (inherits@2.0.1, minimatch@0.3.0) D:\myapp>
命令运行的回显结果
步骤5:然后,我们就可以运行了!!!哈哈。
运行命令 node app 启动主程序,如果启动无反应,您也可以切换到bin目录,运行 node www 启动程序:
步骤6:打开浏览器,访问:http://127.0.0.1:3000:
步骤7:刷新页面,我们每发出一个请求,express都会做出记录:
五、说明:
本文就是简单的入门篇,后面有时间我会针对这个站点系统的骨架,目录扫雷式讲解,并且演示进行二次自定义开发。
大家也可以自己看看这个目录结构,手动修改一下页面,熟悉一下。
Express 教程 01 - 入门教程之经典的Hello World的更多相关文章
- [译]Vulkan教程(01)入门
[译]Vulkan教程(01)入门 接下来我将翻译(https://vulkan-tutorial.com)上的Vulkan教程.这可能是我学习Vulkan的最好方式,但不是最理想的方式. 我会用“d ...
- TensorFlow 中文资源全集,官方网站,安装教程,入门教程,实战项目,学习路径。
Awesome-TensorFlow-Chinese TensorFlow 中文资源全集,学习路径推荐: 官方网站,初步了解. 安装教程,安装之后跑起来. 入门教程,简单的模型学习和运行. 实战项目, ...
- TensorFlow 中文资源精选,官方网站,安装教程,入门教程,实战项目,学习路径。
Awesome-TensorFlow-Chinese TensorFlow 中文资源全集,学习路径推荐: 官方网站,初步了解. 安装教程,安装之后跑起来. 入门教程,简单的模型学习和运行. 实战项目, ...
- 现代OpenGL教程 01 - 入门指南
原文链接传送门 译序 早前学OpenGL的时候还是1.x版本,用的都是glVertex,glNormal等固定管线API.后来工作需要接触DirectX9,shader也只是可选项而已,跟固定管线一起 ...
- solr的安装及配置详细教程/solr入门教程
1 solr的下载 从Solr官方网站(http://lucene.apache.org/solr/ )下载Solr最新版本,根据Solr的运行环境,Linux下需要下载solr-7.3.1.tgz, ...
- MUD教程--巫师入门教程3
1. 指令格式为:edit <档名>,只加文件名,默认为当前目录,加here,表示编辑你当前所处的房间, 回车后即进入线上编辑系统. 2. 如果这是一个已经有的档案,你可以使用 z 或 Z ...
- 【转】MUD教程--巫师入门教程2
简单的人物原则上只要有 set_name<名字> . combat_exp <经验>就行了,当然我们总得稍微多添一点了.inherit NPC;void create(){ s ...
- 【转】MUD教程--巫师入门教程1
<新巫师入门手册> 第一章:观念篇■ 内容提要:什么是巫师?怎样做一个巫师?如何做好一个巫师? 第二章:上手篇■ 内容提要:最简单的房间怎么写?NPC又怎么写?先看懂一些常用的参数? 第三 ...
- Java基础教程--安卓入门教程(七)
关注我,每天都有优质技术文章推送,工作,学习累了的时候放松一下自己. 欢迎大家关注我的微信公众号:「醉翁猫咪」 什么是接口? 接口的基本语法 接口的基本语法(一) 使用interface定义 接口当中 ...
随机推荐
- 操作系统篇-调用门与特权级(CPL、DPL和RPL)
|| 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.前言 在前两篇文章(<操作系统篇-浅谈实模式与保护模式>和<操作系统篇-分段机制与GDT|LDT>)中,我们提到 ...
- 对Castle Windsor的Resolve方法的解析时new对象的探讨
依赖注入框架Castle Windsor从容器里解析一个实例时(也就是调用Resolve方法),是通过调用待解析对象的构造函数new一个对象并返回,那么问题是:它是调用哪个构造函数呢? 无参的构造函数 ...
- jQuery学习之路(2)-DOM操作
▓▓▓▓▓▓ 大致介绍 jQuery作为JavaScript库,继承并发扬了JavaScript对DOM对象操作的特性,使开发人员能方便的操作DOM对象. ▓▓▓▓▓▓ jQuery中的DOM操作 看 ...
- angularjs 依赖注入--自己学着实现
在用angular依赖注入时,感觉很好用,他的出现是 为了"削减计算机程序的耦合问题" ,我怀着敬畏与好奇的心情,轻轻的走进了angular源码,看看他到底是怎么实现的,我也想写个 ...
- 在Linux系统下运行微信Web开发者工具
微信Web开发者工具只有window版本和mac版本,如果想要在Linux系统下运行微信Web开发者工具,需要花费很大周折. 注:带 * 的步骤或文件为不确定是否管用的步骤或文件.本人系统为Linux ...
- .NET中AOP方便之神SheepAspect
SheepAspect 简介以及代码示列: SheepAspect是一个AOP框架为.NET平台,深受AspectJ.它静织目标组件作为一个编译后的任务(编译时把AOP代码植入). 多有特性时,可根据 ...
- [WPF] Wait for a moment.
一.控件介绍 在 WPF 中使用的等待控件,控件包括三种,普通的等待信息提示(WaitTip),进度条提示(WaitProgress),以及主程序覆盖的模拟时钟等待窗口(WaitClock),具体效果 ...
- yaf的简单入门
1.目录结构: 2.入口文件 入口文件是所有请求的入口,一般都借助于rewrite规则,把所有的请求都重定向到这个入口文件. 一个经典的入口文件 public/index.php 3.重写规则 需要 ...
- 【干货分享】流程DEMO-人员调动流程
流程名: 调动 流程相关文件: 流程包.xml 流程说明: 直接导入流程包文件,即可使用本流程 表单: 流程: 图片:3.png DEMO包下载: http://files.cnblogs.com ...
- DevExpress - 使用 GaugeControl 标尺组件制作抽奖程序 附源码
前不久,公司举办了15周年庆,其中添加了一个抽奖环节,要从在读学员中随机抽取幸运学员,当然,这个任务就分到了我这里. 最后的效果如下,启动有个欢迎页面,数据是来自Excel的,点击开始则上面的学号及姓 ...