1.因为只是用了一点皮毛,所以使用起来感觉基本和jsp无异,

逻辑代码块使用  <%  if() {} else  %> , 输出参数值使用 <%=title  %>,

有一个比较特别的一点,就是当参数值中含有html标签时需要使用 <%-title %>才能解析html并输出

2.之前以为前后端都用js,所以应该没有具体的分层,实际上还是有mvc模式,并且各司其职

(和java的jsp+struts差不多,不同之处仅仅是前后端使用了同一种语言而已),

目前所在公司所用的一个基本模板如下:

[bin]、package.json 为项目配置文件,

[public]为静态文件目录,包含 样式文件、图片文件、前端js文件

[routers]为业务层目录,一般称之为路由,包含一些业务逻辑及数据库的操作

[lib]为数据层目录,包含一些sql、日志、配置文件的操作

<ProjectName>/
├── bin/
│ └── www
├── lib/
│ ├── common.js
│ ├── config.js
│ ├── logger.js
│ └── prepare.js
├── public/
│ ├── css
│ ├── images
│ └── js
├── routers/
│ ├── default.js
│ └── index.js
├── views/
│ ├── common
│ ├── error.ejs
│ ├── errorFriendly.ejs
│ └── index.ejs
├── app.js
├── package.json
└── <ProjectName>.conf (以上目录结构仅为当前公司所使用,不代表一种固定的做法。
不像java那样前端目录一般都是 webRoot或者webContent,感觉node.js在项目结构方面应该比较灵活)

3.关于路由

这个说法是基于node.js的一个很重要的框架express(还在了解中,应该类似于java的struts吧,可能)

如果使用express生成一个项目模板,可以看到如图所示(html模板引擎默认使用jade)

以下是express一个最基本的创建一个方法供前端调用的例子

·引用以及创建路由

const express = require('express');
const router = express.Router();
·配置前端请求时的路径,以及请求该路径时调用的函数
 
router.get('/index.html', init, renderIndex);
router.post('/nextPage', nextPageNewsList);

·上一步中的函数

function init(req, res, next) {
next();
}
function renderIndex(req, res, next) {
res.render('./' + 'index', {
title: '首页',
dataList : dataList
});
}
function nextPageNewsList(req, res, next) {
const pageNo = req.body['pageNo'];//获取参数
  //数据处理....
res.json({ ret: 0, dataList: dataList});//数据返回到前端...
}

至此,前端js中只需要使用 $.post('nextPage',function(data){}) 即可调用相应函数并获取返回结果

而最初访问 index.html时,由于配置的函数 renderIndex 中会跳转页面,因此会直接跳转到首页

NodeJs学习记录(五)初学阶段关于ejs和路由的更多相关文章

  1. NodeJS 学习记录

    这里是我学习NodeJs的学习记录 URL:网址解析的好帮手 URL,URI 首先,URI是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源.而URL是u ...

  2. NodeJs学习记录(四)初学阶段关于app.js里的一些重要配置

    app.set('views', path.join(__dirname, 'views')); 以上代码用于配置页面文件(例如 .ejs 文件)的根目录, 设置之后 访问 ./index 则等同于访 ...

  3. NodeJs学习记录(三)vscode下启动一个nodejs的web工程

    2017/01/23 星期一 前言:根据手上现成的一个web工程来学习 1.配置vscode使其可以识别nodejs的页面文件.ejs 2.先把项目拖拽至vscode的编辑界面,在"查看&q ...

  4. NodeJs学习记录(一)初步学习,杂乱备忘

    2016/12/26 星期一 1.在win7下安装了NodeJs 1)进入官网 https://nodejs.org/en/download/,下载对应的安装包,我目前下载的是node-v6.2.0- ...

  5. nodejs学习笔记<五>npm使用

    NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题. 以下是几种常见使用场景: 允许用户从NPM服务器下载别人编写的第三方包到本地使用. 允许用户从NPM服务器下载并 ...

  6. nodejs学习记录

    一.环境搭建 1.安装express 局部安装 npm i express 全局安装 npm i -g express (命令行express无法使用) 环境变量 npm i -g express-g ...

  7. Linux 学习记录 五(软件的安装升级).

    一.gcc gcc是Linux上面最标准的C语言的编译程序,用来源代码的编译链接. gcc -c hello.c 编译产生目标文件hello.o gcc -O hello.c 编译产生目标文件,并进行 ...

  8. leveldb 学习记录(五)SSTable格式介绍

    本节主要记录SSTable的结构 为下一步代码阅读打好基础,考虑到已经有大量优秀博客解析透彻 就不再编写了 这里推荐 https://blog.csdn.net/tankles/article/det ...

  9. NodeJs学习记录(二)win7下 配置node连接oracle的环境

    2017/01/23 星期一 前言:还没看几眼教程,就开始分配任务,涉及到连oracle数据库,所以顺便把整个环境的配置放上来 安装文件清单(1).node-v6.9.1-x64.msi(2).pyt ...

随机推荐

  1. Ubuntu 16.04中XMind 8导致Java内存溢出的问题解决(硬盘卡死,桌面卡死)

    XMind使用的是Java进行开发,如果出现内存溢出的问题,那么一定是桌面快捷方式的问题,解决方法是直接修改快捷方式里面的内容,修改如下: [Desktop Entry] Encoding=UTF-8 ...

  2. WCF的Binding模型之四:信道工厂(Channel Factory)

    由于信道管理器在客户端和服务端所起的不同作用,分为信道监听器和信道工厂.和服务端的信道监听其相比,处于客户端的信道工厂显得简单.从名称就可以看得出来,信道工厂的作用就是单纯的创建用于消息发送的信道.我 ...

  3. APPLE STORE

    直接在设置中,使用查看APPLE ID是无法更改的,现在必须要有所在区域的信用卡信息,支付方式无法像以前一样选择“无”. 查询后发现,有人说icloud3.0,即这个旧版的可以进行更改,于是下载. 但 ...

  4. C++之类的比較运算符的重载

    比較运算符的重载通常有两种方式: 第一:作为成员函数重载 曾经几章的Student类为例: <span style="font-family:Microsoft YaHei;font- ...

  5. react 项目实战(十)引入AntDesign组件库

    本篇带你使用 AntDesign 组件库为我们的系统换上产品级的UI! 安装组件库 在项目目录下执行:npm i antd@3.3.0 -S 或 yarn add antd 安装组件包 执行:npm ...

  6. Android基础新手教程——4.3.1 BroadcastReceiver牛刀小试

    Android基础新手教程--4.3.1 BroadcastReceiver牛刀小试 标签(空格分隔): Android基础新手教程 本节引言 本节我们将来学习Android四大组件中的第三个:Bro ...

  7. ZOJ3662:Math Magic(全然背包)

    Yesterday, my teacher taught us about math: +, -, *, /, GCD, LCM... As you know, LCM (Least common m ...

  8. Oracle中长度为0字符串与null等价

    不试不知道,Oracle中,长度为0的字符串'' 居然与null等价! 众所周知,null代表空,什么都不存在,而一个字符串'',虽然长度为0,但毕竟已经是一个字符串,二者怎么能等价,混为一谈呢. 在 ...

  9. FFmpeg将多张图片合成视频 子视频合并

    FFmpeg将多张图片合成视频 - CSDN博客 https://blog.csdn.net/wangshuainan/article/details/77914508 Slideshow – FFm ...

  10. JFreeChart生成饼形图(3)11 (转自 JSP开发技术大全)

    FreeChart生成饼形图(3) (转自 JSP开发技术大全) 14.3 利用JFreeChart生成饼形图 通过JFreeChart插件,即可以生成普通效果的饼形图,也可以生成3D效果的饼形图:如 ...