Nodejs初阶之express



- 安装命令中的 “-g” 表示全局(global)
- express的版本不是通常的 “-v” 来查看,而是 “-V”
- 安装express项目的命令如下
express -e nodejs-product-e, --ejs add ejs engine support-J, --jshtml add jshtml engine support (defaults to jade)PS:模板引擎之类暂时不必care,不过俺当初学习搭建Node+express时用的是ejs,所以也就顺手一直用着了

- app.js: 项目入口,反正express爱叫app.js没辙,你可以改成index.js或者main.js都成。相当于php项目中的 index.php、index.html
- node_modules: 存放项目的依赖库
- package.json: 项目依赖配置及开发者信息(这个要说就说多了,还是看文档好,俺就不误人子弟了。下期看看抽个小段单说Node模块)
- public: 静态文件如 css,js,img (PS:俺其实习惯叫static)
- routes: 路由文件(学习的重要攻克对象。尼玛业务好不好,路由是关键)
- Views: 页面文件(Ejs或者jade的模板,默认是jade,俺这用Ejs,在初阶练手最重要,所以都可以试试)
- “app.set('view engine', 'ejs');” 变成 “app.engine('.html', ejs.__express);app.set('view engine', 'html');”
- 上一行出现的ejs变量需要require ejs模块,增加代码“var ejs = require('ejs');”

- var express = require('express');
- var app = express();
- app.get('/', function(req, res){
- res.send('hello world');
- console.log('hello world');
- });
- app.listen('8808');


- 第一种方式就是在当前的routes/index.js或者routes/test.js中加几行代码如下
- exports.test = function(req, res){
- res.send('test welcome.');
- };
- exports.test = function(req, res){
- 在app.js文件设置路由那块加上app.get('/test', routes.test);
- <!DOCTYPE html>
- <html lang="zh-cn">
- <head>
- <title><%= title %></title>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <link href="/stylesheets/bootstrap.min.css" rel="stylesheet">
- <!--<link href="/stylesheets/base.css" rel="stylesheet">-->
- <!--<link href="/stylesheets/common.css" rel="stylesheet">-->
- <!--<link href="/stylesheets/page.css" rel="stylesheet">-->
- <!-- 建议在项目中把CSS分好level,好维护和管理 -->
- <style>
- html, body { overflow-x: hidden;}
- body { padding-top: 70px;background:#f1f1f1; }
- footer { padding:20px 0 10px;text-align:center;font-weight:bold;border-top:1px solid #ddd;margin-top:30px;}
- .header-navbar-style {
- filter:alpha(opacity=90);
- -moz-opacity:0.9;
- -khtml-opacity: 0.9;
- opacity: 0.9;
- background: linear-gradient(45deg, rgb(60, 8, 34) 0%, rgb(49, 79, 117) 100%);
- border:1px solid #aaa;
- font-size:16px;
- }
- .beige {background:beige;}
- .bisque {background:bisque;}
- .darkseagreen{ background:darkseagreen;}
- </style>
- </head>
- <body>
- <div class="navbar navbar-fixed-top header-navbar-style navbar-inverse" role="navigation">
- <div class="container">
- <div class="navbar-header">
- <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
- <span class="sr-only">Toggle navigation</span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </button>
- <a class="navbar-brand" href="/">Product</a>
- </div>
- <div class="collapse navbar-collapse">
- <ul class="nav navbar-nav">
- <li class="active"><a href="/">Home</a></li>
- <li class=""><a href="/contactus">Contact</a></li>
- <li class="dropdown">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
- <ul class="dropdown-menu beige">
- <li><a href="#">Action</a></li>
- <li><a href="#">Another action</a></li>
- <li><a href="#">Something else here</a></li>
- <li class="divider"></li>
- <li><a href="#">Separated link</a></li>
- <li class="divider"></li>
- <li><a href="#">One more separated link</a></li>
- </ul>
- </li>
- <li class=""><a href="/faq">FAQ</a></li>
- </ul>
- </div><!-- /.nav-collapse -->
- </div><!-- /.container -->
- </div><!-- /.navbar -->
- <!-- 以上位置建议创建个header.html维护起来 -->
- <style>
- @media screen and (max-width: 767px) {
- .row-offcanvas { position: relative;
- -webkit-transition: all 0.25s ease-out;
- -moz-transition: all 0.25s ease-out;
- transition: all 0.25s ease-out;
- }
- .row-offcanvas-right .sidebar-offcanvas { right: -50%; /* 6 columns */ }
- .row-offcanvas-left .sidebar-offcanvas { left: -50%; /* 6 columns */ }
- .row-offcanvas-right.active { right: 50%; /* 6 columns */ }
- .row-offcanvas-left.active { left: 50%; /* 6 columns */ }
- .sidebar-offcanvas { position: absolute; top: 0; width: 50%; /* 6 columns */ } }
- </style>
- <div class="container">
- <div class="row row-offcanvas row-offcanvas-right">
- <div class="col-xs-12 col-sm-9">
- <p class="pull-right visible-xs">
- <button type="button" class="btn btn-primary btn-xs" data-toggle="offcanvas">Toggle nav</button>
- </p>
- <div class="jumbotron bisque">
- <h1>Welcome <%= title %>!</h1>
- <p>This is an example to show the potential of an offcanvas layout pattern in Bootstrap. Try some responsive-range viewport sizes to see it in action.</p>
- </div>
- <div class="row">
- <div class="col-6 col-sm-6 col-lg-4">
- <h2>Heading</h2>
- <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
- <p><a class="btn btn-default" href="#" role="button">View details »</a></p>
- </div><!--/span-->
- <div class="col-6 col-sm-6 col-lg-4">
- <h2>Heading</h2>
- <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
- <p><a class="btn btn-default" href="#" role="button">View details »</a></p>
- </div><!--/span-->
- <div class="col-6 col-sm-6 col-lg-4">
- <h2>Heading</h2>
- <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
- <p><a class="btn btn-default" href="#" role="button">View details »</a></p>
- </div><!--/span-->
- <div class="col-6 col-sm-6 col-lg-4">
- <h2>Heading</h2>
- <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
- <p><a class="btn btn-default" href="#" role="button">View details »</a></p>
- </div><!--/span-->
- <div class="col-6 col-sm-6 col-lg-4">
- <h2>Heading</h2>
- <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
- <p><a class="btn btn-default" href="#" role="button">View details »</a></p>
- </div><!--/span-->
- <div class="col-6 col-sm-6 col-lg-4">
- <h2>Heading</h2>
- <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
- <p><a class="btn btn-default" href="#" role="button">View details »</a></p>
- </div><!--/span-->
- </div><!--/row-->
- </div><!--/span-->
- <div class="col-xs-6 col-sm-3 sidebar-offcanvas" id="sidebar" role="navigation">
- <div class="list-group">
- <a target="_blank" href="#" class="list-group-item">Link</a>
- <a href="#" class="list-group-item">Link</a>
- <a href="#" class="list-group-item">Link</a>
- <a href="#" class="list-group-item">Link</a>
- <a href="#" class="list-group-item">Link</a>
- <a href="#" class="list-group-item">Link</a>
- <a href="#" class="list-group-item">Link</a>
- <a href="#" class="list-group-item">Link</a>
- <a href="#" class="list-group-item">Link</a>
- <a href="#" class="list-group-item">Link</a>
- </div>
- </div><!--/span-->
- </div><!--/row-->
- </div><!--/.container-->
- <!-- 从header.html之后到此可分为page层 -->
- <footer class="darkseagreen">
- <p>Copyright © 2014. Designed by nieweidong.</p>
- </footer>
- <script src="/javascripts/jquery-1.11.0.min.js"></script>
- <script src="/javascripts/bootstrap.min.js"></script>
- <script>
- $(document).ready(function() {
- $('[data-toggle=offcanvas]').click(function() {
- $('.row-offcanvas').toggleClass('active');
- });
- });
- </script>
- </body>
- </html>
如果样式有问题请检查下bootstrap的路径是否正确引入。
启动项目之后觉得 高大上 很简单,有木有!!
Nodejs初阶之express的更多相关文章
- R语言实战(一)介绍、数据集与图形初阶
本文对应<R语言实战>前3章,因为里面大部分内容已经比较熟悉,所以在这里只是起一个索引的作用. 第1章 R语言介绍 获取帮助函数 help(), ? 查看函数帮助 exampl ...
- 【转载】nodejs,npm,express分别什么?
很多刚刚接触nodejs的初学者,都会经历一个很繁冗的环境安装过程. 一般主要要安装nodejs,npm和express三样东西.那么这三样东西分别是干什么的呢? 本篇文章就大致介绍一下这三样东西分别 ...
- Windows 7 搭建 nodejs、npm、express 环境
准备工作: 下载nodejs (exe format)(http://nodejs.org/) 下载npm(zip format)(http://nodejs.org/dist/npm/) 开始安装 ...
- 平衡树初阶——AVL平衡二叉查找树+三大平衡树(Treap + Splay + SBT)模板【超详解】
平衡树初阶——AVL平衡二叉查找树 一.什么是二叉树 1. 什么是树. 计算机科学里面的树本质是一个树状图.树首先是一个有向无环图,由根节点指向子结点.但是不严格的说,我们也研究无向树.所谓无向树就是 ...
- # nodejs模块学习: express 解析
# nodejs模块学习: express 解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固,需要开发者创造大量的轮子 ...
- Mac下nodeJS初体验
Mac下nodeJS初体验 这两天博主出门在外,抽空体验一下大名鼎鼎的node 安装 brew install node 安装测试 $ node -v v8.4.0 运行本地脚本 用文本编辑器编辑一段 ...
- 重温ASP.NET WebAPI(一)初阶
重温ASP.NET WebAPI(一)初阶 前言 本文为个人对WebApi的回顾无参考价值.主要简单介绍WEB api和webapi项目的基本结构,并创建简单地webaapi项目实现CRUD操作. ...
- Nodejs进阶:基于express+multer的文件上传
关于作者 程序猿小卡,前腾讯IMWEB团队成员,阿里云栖社区专家博主.欢迎加入 Express前端交流群(197339705). 正在填坑:<Nodejs学习笔记> / <Expre ...
- CentOS安装NodeJS v0.10.25 + Express
安装必需组件 yum -y install gcc make gcc-c++ openssl-devel wget cd ~wget http://nodejs.org/dist/v0.10.25/n ...
随机推荐
- java中的泛型的使用与理解
什么是泛型? 泛型是程序设计语言的一种特性.允许程序员在强类型程序设计语言中编写 体验泛型代码时定义一些可变部份,那些部份在使用前必须作出指明.各种程序设计语言和其编译器.运行环境对泛型的支持均不一样 ...
- c语言文件读写操作总结
C语言文件读写操作总结 C语言文件操作 一.标准文件的读写 1.文件的打开 fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程 ...
- Java: some learning note for Java calssloader and Servlet
1. Java Classloader 链接: https://en.wikipedia.org/wiki/Java_Classloader 摘要: The Java Classloader is a ...
- nodejs express 安装
前几天刚遇到的问题sudo npm install -g expresssudo npm install -g express-generator然后通过express -V查看版本,看好是大写的V ...
- 【Java】JDK类 CountDownLatch
一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待. 用给定的计数 初始化 CountDownLatch.由于调用了 countDown() 方法,所以在当前计数到达 ...
- dd——留言板再加验证码功能
1.找到后台-核心-频道模型-自定义表单 2.然后点击增加新的自定义表单 diyid 这个,不管他,默认就好 自定义表单名称 这个的话,比如你要加个留言板还是投诉建议?写上去呗 数据表 这个不要碰, ...
- 复习排序with javascript
最近又翻看了一下数据结构(数据结构学渣). 以前总是看不懂,连冒泡和选择排序都要纠结半天,后来才慢慢有意识能区分开来. 当真的理解了快速排序之后,才觉得,这是个很赞的排序,很容易理解. 于是简单的,模 ...
- python 函数之day3
一 函数的语法及特性 什么是函数? 定义:函数是一个功能通过一组语句的集合,由名字(函数名)将其封装起来的代码块,要想执行这个函数,只要调用其函数名即可. 特性: 减少重复代码 使程序变的可扩展 使程 ...
- >hibernate的四种状态
hibernate的四种状态 1.临时状态 与数据库中没有相对应的数据,也不在session的管理之中,一般是新new出来的对象 2.持久化状态 对象在session的管理中,最后会在事务提交后,在数 ...
- 浏览器调试js技巧总结
一.控制台console的运用 console.log(aa|'aa'): 将需要打印的东西输出的控制台,在调试的时候很有用,可以知道aa是否是自己想要的数据类型,或者可以知道程序是否执行到了这一步, ...