好的程序员的web前端学习教程的NodeJs流程1、项目准备: 以express框架为例 npmiexpress-generator-g//全局安装express框架 express-e//生成express应用骨架 npmi//安装依赖 npmstart//监听 onport3000扩展:目前最市面上流行的node框架有: --Sail.js Sails.js就像是Node.js平台上的Rails框架。这是一个可靠且可扩展的开发框架,具有面向服务的架构,可提供数据驱动的API集合。非常方便开发多人游戏、聊天应用和实时面板参考,也可用于开发企业级Node.js应用。 Sails.js构建于Node.js、Connect、Express和Socket.io之上。 --Koa.js koa.js是下一代Node.jsWeb框架。由Express团队设计。旨在为Web应用程序和API提供更小、更具表现力、更可靠的开发基础。 Koa可以通过生成器摆脱回调,从而大大改进错误处理。Koa核心不与任何中间件捆绑在一起,但提供了一套优雅的方法,使编写服务器应用程序变得快速而愉快。 2、项目启动 --使用bootstrap完成布局(或者使用bulma前端css框架也很方便) --将需要复用的widget放在一个文件夹中,这里我新建了一个commjs目录 --在构造函数中加载DOM结构(面向对象的思想) --模块化所有需要复用的组件,在需要的地方引入,代码复用 3、理解mvc --Controller控制器: 是应用程序中处理用户交互的部分。 通常控制器负责从视图中读取数据,控制用户输入,并向模型发送数据。 功能:根据路由中设置的不同路径,调用controller中对应的方法(函数), res.body=>获取post请求中传入的参数 res.query=>获取get请求 中数据的业务逻辑基本都在控制层,调用model中对应的函数,将要传入的数据作为参数 --Model Model(model)是应用程序中用来处理应用程序数据逻辑的部分。 作用:通常模型对象负责访问数据库中的数据。 因为模型中的函数需要在controller中调用,所以最后需要导出模型。在 模型中,与数据库相关的操作需要依赖mogoose包 模型处理数据,通过Promise返回一个promise对象,成功或者失败,然后调用controller传入的成功或者失败函数 控制器res.json返回给前端 --View(视图) 是应用程序中处理数据显示的部分。 通常视图是根据模型数据创建的 4、前端到后端 作为前端,如果我们需要获取后端数据,我们要发送一个ajax请求,如果涉及文件操作,我们必须通过不同的url(在app.js中设置)使用post请求 ,获取不同的数据 view-Controller-Model,根据返回的数据渲染页面 这里是还是MVC模式,所以MVC的流程肯定是要熟悉的。 5、功能 登录: 涉及到对数据库的操作,查询的结果是一个Promise对象,在 控制器中的操作还是一样的东西,传递给controller由前端,成功回调,失败回调 模型中,promise.then()决定调用成功或失败的函数,传递给controller回调,controllerres.json返回给前端信息 需要保存用户登录信息:npmicocookie-session--save app.js配置cookie-session中间件 检查是否登录: 当前端加载完毕,发送ajax请求,根据响应信息判断是否登录,渲染登录效果 点击退出时,设置req.session为null **fromData.append("","")添加请求信息 6、关于文件上传 --涉及到文件上传,在服务端引入 multer模块npmimulter--save --配置文件上传,cv原理,修改终端(路由)中的保存位置和命名规则 --在路由中,在回调函数前添加文件上传方法 router.post('',upload,single('fileuploadformname'),fn) --controller判断是否有文件上传(res.file) 是否有有用的变量savefilepath=>constfile="/savepathconfiguredin路由/"+req.file.文件名 7、mvc的意思 MVC分层有助于管理复杂的应用程序,因为你可以一次专注于一个方面。例如,您可以专注于视图设计而不依赖业务逻辑。它还使测试应用程序更加容易。 MVC分层也简化了组开发。不同的开发人员可以同时开发视图、控制器逻辑和业务逻辑。 8.总结 Node.js实现了前后端分离。了解了MVC之后,所有的操作都是一步步完成的。前端向后端请求数据,页面只根据请求的数据进行渲染。controller主要负责业务逻辑,model存储数据(mongodb是非关系型数据库,需要转成关系型数据库)。控制器连接显示层和模型。它决定了后端返回什么数据,前端可以获得什么数据。
