菜鸟教程简介:Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。

使用 Express 可以快速地搭建一个完整功能的网站。

使用express创建一个基本的网站(用vs code开发)。(根据Node与Express开发那本书的例子)

1、首先npm init,初始化package.json文件;npm install --save express安装express;

2、接下来创建meadowlark.js文件,这是项目的入口。(最终代码)

var express = require('express');
var app = express(); var handlebars = require('express3-handlebars')
.create({ defaultLayout:'main' });
app.engine('handlebars', handlebars.engine);
app.set('view engine', 'handlebars'); app.use(express.static(__dirname + '/public')); app.get('/', function(req, res){
res.render('home');
});
app.get('/about', function(req, res){
var randomFortune = fortunes[Math.floor(Math.random() * fortunes.length)];
res.render('about', { fortune : randomFortune });
});
app.use(function(req, res, next){
res.status(404);
res.render('404');
});
app.use(function(err, req, res, next){
console.error(err.stack);
res.status(500);
res.render(500);
}); app.listen(3000, function () {
console.log('访问地址为:'); }) var fortunes = [
"随机发送幸运饼干1",
"随机发送幸运饼干2",
"随机发送幸运饼干3",
"随机发送幸运饼干4",
]

学到的技术点:

  指定端口的方式:app.set(port, process.env.PORT || 3000);

  app.get是我们添加路由的方法,有两个参数:一个路径和一个函数。在express文档中写的是app.VERB.VERB指代HTTP动词(get和post)。

  app.use是添加中间件的方法。在express中路由和中间件的添加顺序很重要,如果把404处理器放在所有路由上面,那首页和关于页面就不能用了。

  

3、使用模板框架express3-handlebars,用npm下载,之后设置handlebars视图引擎。views/layout/main.handlebars为默认通用框架。

  配置代码:

var handlebars = require('express3-handlebars')
.create({ defaultLayout:'main' });
app.engine('handlebars', handlebars.engine);
app.set('view engine', 'handlebars');

4、在第三步创建handlebars实例时,我们指明了默认布局{ defaultLayout:'main' },意味着所有视图用的都是这个布局。接下来给首页创建视图页面,meadowlark/views/home.handlebars:

  <h1>Welcome to Meadowlark Travel</h1>
关于页面,meadowlark/views/about.handlebars:
  <h1>About Meadowlark Travel</h1>
未找到页面,meadowlark/views/404.handlebars:
  <h1>404 - Not Found</h1>
服务器错误页面,meadowlark/views/500.handlebars:
  <h1>500 - Error</h1>
 
5、在meadowlark.js替换新路由,上面代码里就是新路由
6、static中间件可以将一个或多个目录指派为包含静态资源的目录,其中的资源不需要经过任何特殊处理直接发送到客户端。可以在其中放图片、css文件、js文件等。
接下来在public下面创建一个子目录img,放图片进去。路径直接指向/img/...png,static中间件会返回这个文件,并正确设置文件类型。
main.handlebars的内容如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Meadowlark Travel</title>
</head>
<body>
<header><img src="/img/favicon.ico" alt=""></header>
{{{body}}}
</body>
</html>

7、视图中的动态内容

在meadowlark.js中定义一个幸运饼干数组:

var fortunes = [
"随机发送幸运饼干1",
"随机发送幸运饼干2",
"随机发送幸运饼干3",
"随机发送幸运饼干4",
]
修改视图(/views/about.handlevars),显示幸运饼干:
<h1>About Meadowlark Travel</h1>
<p>Your fortune for the day</p>
<blockquote>{{fortune}}</blockquote>
8、修改路由/about
app.get('/about', function(req, res){
var randomFortune = fortunes[Math.floor(Math.random() * fortunes.length)];
res.render('about', { fortune : randomFortune });
});
9、重启服务器,加载about页面会看到随机饼干。
 
 文件列表:

 

学习express(一)的更多相关文章

  1. express学习-express搭建后台

    前言:本文是纯用node express做一个后端服务的教程,并不等同于express官网的入门教程,本文也并不涉及任何高级的Node服务端性能优化等知识. 本文是在已经看过express官方入门指南 ...

  2. node.js 基础学习 express安装使用

    安装好nodeJs,我们需要使用命令行中安装express. 我这里默认将Node.js安装在C:\Program Files\nodCejs\盘中. 在保持联网的状态下,依次输入如下命令. npm ...

  3. nodejs学习--express篇

    express篇:http://www.runoob.com/nodejs/nodejs-express-framework.html Express 提供了内置的中间件 express.static ...

  4. Nodejs in Visual Studio Code 03.学习Express

    1.开始 下载源码:https://github.com/sayar/NodeMVA Express组件:npm install express -g(全局安装) 2.ExpressRest 打开目录 ...

  5. crossplatform---Nodejs in Visual Studio Code 03.学习Express

    1.开始 下载源码:https://github.com/sayar/NodeMVA Express组件:npm install express -g(全局安装) 2.ExpressRest 打开目录 ...

  6. express再学习

    对比spring,django,再学习express就有很多共通的地方啦... 看的书是一本小书,<express in action>,排版比较好. 昨天开始看,看了快四分之一啦... ...

  7. express源码学习

    终于腾出手来学习express.express在node.js中一株独秀.好像任何一种有主导的托管平台的语言,都出现这现象--马太效应.express是社区的共同孩子,里面聚集上社区最好的常用模块.从 ...

  8. 一天学习一点之express demo

    接着上一篇,安装了nodejs之后,再安装express,顺序执行以下命令 1.npm  -g install express; 2.npm -g express-generator; 3.使用exp ...

  9. Express开发实例(2) —— Jade模板引擎

    前一篇通过helloworld,简单介绍了Express中的开发,本篇继续深入的学习express的模板. 关于Jade的用法,网上有很多,本篇参考:Jade语法 安装相关模块 在实验代码前,应该先安 ...

随机推荐

  1. 「LOJ#10043」「一本通 2.2 例 1」剪花布条 (KMP

    题目描述 原题来自:HDU 2087 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案.对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢? 输入格式 输入数据 ...

  2. C++模板之可变模板参数

    可变模板参数---- C++11新特性 可变模板参数(variadic templates)是C++11新增的最强大的特性之一,它对参数进行了高度泛化,它能表示0到任意个数.任意类型的参数 由于可变模 ...

  3. ceph学习之pool

    pool是ceph存储数据时的逻辑分区,它起到namespace的作用.其他分布式存储系统,比如Mogilefs.Couchbase.Swift都有pool的概念,只是叫法不同.每个pool包含一定数 ...

  4. c语言编译器内置宏

    注:转自http://www.cnblogs.com/lixiaohui-ambition/archive/2012/08/21/2649052.html  感谢分享 前言: 我们在写程序的时候,总是 ...

  5. 20个Flutter实例视频教程-第13节: 展开闭合案例

    20个Flutter实例视频教程-第13节: 展开闭合案例 视频地址: https://www.bilibili.com/video/av39709290/?p=13 博客地址: https://js ...

  6. QDUoj GZS的三角形 棋盘里的数学 思维+杨辉三角

    1. 题目 我的提交 GZS的三角形 发布时间: 2015年9月6日 15:18   最后更新: 2016年6月26日 12:10   时间限制: 1000ms   内存限制: 256M 描述 机智无 ...

  7. Educational Codeforces Round 20 C(math)

    題目鏈接: http://codeforces.com/problemset/problem/803/C 題意: 給出兩個數n, k, 將n拆分成k個數的和,要求這k個數是嚴格遞增的,並且這k個數的g ...

  8. bzoj3771: Triple(容斥+生成函数+FFT)

    传送门 咳咳忘了容斥了-- 设\(A(x)\)为斧头的生成函数,其中第\(x^i\)项的系数为价值为\(i\)的斧头个数,那么\(A(x)+A^2(x)+A^3(x)\)就是答案(于是信心满满的打了一 ...

  9. javaScript中for-in语句

    for-in语句是一种精准的迭代语句,用来枚举对象的属性 实例: <!DOCTYPE html><html><head> <title>For-In S ...

  10. web前端篇:html基础知识

    目录 1.web前端: 2.HTML概述 2.1HTML介绍 2.2HTML在计算机中如何表现 3.HTML基础语法 4.练习题: 1.web前端: 什么是web? web 就是网页,是一种基于B/S ...