1.概述

ThinkJS 是一款使用 ES6/7 特性全新开发的 Node.js MVC 框架,对于之前是纯前端的童鞋,可能不了解MVC框架是什么,不知道后台和前台怎么配合。

本教程以Thinkjs2.2为例。

MVC,就是指Model,View和Controller。

Model是数据层,真正的数据存在数据库里,Model里面要写的获取数据库中的数据 并 对获取到的数据进行一些处理的方法;

View是视图层,对应的文件夹就是根目录下的view文件夹。这块就是前端的范畴了,view里面就放一些html文件,需要注意的是html中需要用到的css样式,js脚本,字体font,图片img等静态资源文件不要放在view文件夹里面,应该放在/www/static里面;

Controller是控制器,逻辑层,调用model层的方法获取数据库中的相关数据,给view层提供前端可调用的方法,进行数据交互。

对应要敲代码的位置分别是哪里

根据文档中的方法创建一个空的thinkjs项目之后(https://thinkjs.org/zh-cn/doc/2.2/create_project.html),可以看到根目录下有src和view这两个文件夹。

在解释m、v和c要写在哪里之前,先来了解下模块的概念;(https://thinkjs.org/zh-cn/doc/2.2/module.html)

整个项目也是以模块的形式来划分,比如todolist,就可以按照功能划分成user(负责用户的登录登出,个人信息等相关操作)和list(待办事项列表的增删查改显示等相关操作)两个模块。Src文件夹下有两个子文件夹common和home,src文件夹下面的每一个子文件夹就代表一个模块,

每个模块有独立的配置(config)、控制器(controller)、视图(view)、模型(model)等文件。

common 模块是个通用模块,该模块下存放一些通用的功能,如: 通用的配置,runtime 目录,启动文件,错误处理控制器等。

注:该模块下的控制器不能响应用户的请求。

Home 模块是新建项目下唯一一个能相应用户请求的模块(新增用户自定义模块的方法参照https://thinkjs.org/zh-cn/doc/2.2/module.html#toc-939),以home模块为例,home文件夹下有config、Controller、logic和model四个子文件夹,config用来写所属模块的配置(https://thinkjs.org/zh-cn/doc/2.2/config.html),Controller就是之前提到MVC中C,写所属模块的逻辑层,controller文件夹下面的每一个js文件就是所属模块下的一个控制器,每个控制器文件里面写***Action方法,用来响应来自前端的请求。

Logic 当在 Action 里处理用户的请求时,经常要先获取用户提交过来的数据,然后对其校验,如果校验没问题后才能进行后续的操作(https://thinkjs.org/zh-cn/doc/2.2/logic.html)。

Model就是之前提到的MVC中的M,写所属模块数据相关操作。Model文件夹下每一个js文件都对应一个数据表(js文件的文件名需与数据库中的数据表名对应),在js文件中就可以写每个数据表相关的操作方法(在使用数据库之前,需要配置Common/config/db.js文件'')。

每个模块对应的视图层view在根目录的view文件夹下。View文件夹下的子文件夹同src一致,都是按模块划分好的。Common中就是一些公共视图文件,其余的都是各自模块所属的视图文件。前端所要用到的css样式,js脚本,字体font,图片img等静态资源文件不要放在view文件夹里面,应该放在/www/static里面;

好了,下面就开始正式的创建项目了。

Thinkjs学习1—概述及MVC的粗略理解的更多相关文章

  1. 。。。在学习新框架Spring MVC的感受。。。

    已经学习一遍Spring MVC了,感觉还是懵懵懂懂的,特别是重定向,路径,参数的这些问题,心好乱,不过,这,都不是问题!!! 继续努力,努力到会为止!!!加油!!!

  2. thinkphp学习笔记7—多层MVC

    原文:thinkphp学习笔记7-多层MVC ThinkPHP支持多层设计. 1.模型层Model 使用多层目录结构和命名规范来设计多层的model,例如在项目设计中如果需要区分数据层,逻辑层,服务层 ...

  3. 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC

    系列文章 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC 七天学会ASP.NET MVC (二)——ASP.NET MVC 数据传递 七天学会ASP.NET MVC (三)— ...

  4. MVC过滤器简单理解

    之前对于MVC过滤器的理解一直处于很模糊的状态,就在网上找了一些很简单的案例做了一下学习,就找了一个比较容易理解的demo分享给大家. 新建一个MVC4项目,可以在global.asax文件中看到如下 ...

  5. 从零开始一起学习SLAM | 不推公式,如何真正理解对极约束?

    自从小白向师兄学习了李群李代数和相机成像模型的基本原理后,感觉书上的内容没那么难了,公式推导也能推得动了,感觉进步神速,不过最近小白在学习对极几何,貌似又遇到了麻烦... 小白:师兄,对极几何这块你觉 ...

  6. 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC 【转】

    http://www.cnblogs.com/powertoolsteam/p/MVC_one.html 系列文章 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC 七天学会A ...

  7. 关于对FLASH开发,starling、starling feathers、starling MVC框架的理解

    说在前头:楼主之前没有不论什么flash开发经验,仅仅是从一次尝试中总结自己的理解和经验而已.假设有写的不正确的地方,欢迎大家指正. 前一段时间尝试想用flash(as3)又一次制作一下之前做的一个游 ...

  8. 【转载】深度学习中softmax交叉熵损失函数的理解

    深度学习中softmax交叉熵损失函数的理解 2018-08-11 23:49:43 lilong117194 阅读数 5198更多 分类专栏: Deep learning   版权声明:本文为博主原 ...

  9. 学习“迷你ASP.NET MVC框架”后的小结

    看蒋老师MVC的书第二个大收获可以是算是看了这个迷你ASP.NET MVC框架了,虽然它远不如真正ASP.NET MVC(下文简称“MVC”)那么复杂庞大,但在迷你版中绕来绕去也够呛的.这部分我看了几 ...

随机推荐

  1. JAVA 笔记 ClassLoader.getResourceAsStream() 与 Class.getResourceAsStream()的区别

       Class.getResourceAsStream() 会指定要加载的资源路径与当前类所在包的路径一致. 例如你写了一个MyTest类在包com.test.mycode 下,那么MyTest.c ...

  2. zookeeper单机模式安装

    zookeeper单机模式安装 更多文章:http://blogxinxiucan.sh1.newtouch.com/2017/07/26/zookeeper单机模式安装/ 下载zookeeper u ...

  3. cesium根据经纬度计算距离

    var startLatitude = 36;var startLongitude = 120; var endLatitude=34; var endLongitude=121; var start ...

  4. php apache phpmyadmin mysql环境安装

    文件下载: Apache: http://httpd.apache.org/download.cgi PHP,phpMyAdmin,mysql,API下载:http://pan.baidu.com/s ...

  5. iOS项目冗余资源扫描脚本

    iOS项目冗余资源扫描脚本 随着iOS项目的版本不断迭代,app中冗余文件会越来越多,app size也持续增加,是时候需要对app冗余资源进行检测,对app进行瘦身. 使用方法: 1. 运行环境为m ...

  6. c++文件编译的一些说明

    1,头文件只在于预处理阶段用于完全包含该头文件的内容,每个c文件是一个编译单元,类定义和类声明,变量和函数声明,类内联实现是内部链接,全局变量和函数的定义以及类外部实现是具有全局链接性,假设将所有c单 ...

  7. 44. leetcode 28. Implement strStr()

    28. Implement strStr() Implement strStr(). Returns the index of the first occurrence of needle in ha ...

  8. Hibernate批量操作(一)

    在项目的开发过程之中,我们常会遇到数据的批量处理问题.在持久层采用Hibernate框架时,在进行批量操作时,需要考虑Hibernate实现机制带来的一些问题. 我们知道在每个Hibernate Se ...

  9. mybatis example使用 and和or联合查询(转)

    这两天项目用到ibatis,碰到and or的联合查询,语句像这样的 select * from table where xxx = "xxx" and (xx1="xx ...

  10. LindAgile~大叔新宠~一个无所不能框架

    关于她 LindAgile是大叔在这两年里的新宠儿,它主推模块化,插件化,敏捷化,主要于LindAgile基础项目,LindAgile.Http项目,LindAgile.Modules项目和几个扩展模 ...