Node七天笔记汇总(5-7)

Node.js 第5天课堂笔记

知识点

  • Express
  • MongoDB
  • 项目
    • 一天半的时间

反馈

  • 新版sublime 怎么格式化 怎么一起选中长度不等的内容 怎么改颜色 有的写对了也没颜色 仍然是白色
    • HTML-CSS-JS Prettify
  • 代码量好多
    • 真正的开发是咱们这个小案例的无数倍
  • callback是不是相当于函数自调用?
    • 很简单,函数也是一种数据类型,既可以当作参数进行传递,也可以当作方法的返回值
  • 我们现在用的模块化是CMD吧 老师能不能给我们扩展一下AMD
    • PHP 中为什么就可以直接 requireinclude 因为 PHP 当初在设计的时候就加入了这个功能
    • PHP 这门语言天生就支持
    • 模块作用域
    • 可以使用 API 来进行文件与文件之间的依赖加载
    • 在 Node 这个环境中对 JavaScript 进行了特殊的模块化支持 CommonJS
    • JavaScript 天生不支持模块化
      • require
      • exports
      • Node.js 才有的
    • 在浏览器中也可以像在 Node 中的模块一样来进行编程
      • <script> 标签来引用加载,而且你还必须考虑加载的顺序问题
      • require.js 第三方库 AMD
      • sea.js 第三方库 CMD
    • 无论是 CommonJS、AMD、CMD、UMD、EcmaScript 6 Modules 官方规范
      • 都是为了解决 JavaScript 的模块化问题
      • CommonJS、AMD、CMD 都是民间搞出来的
      • EcmaScript 是官方规范定义
      • 官方看民间都在乱搞,开发人员为了在不同的环境使用不同的 JavaScript 模块化解决方案
      • 所以 EcmaScript 在 2015 年发布了 EcmaScript 2016 官方标准
      • 其中就包含了官方对 JavaScript 模块化的支持
      • 也就是说语言天生就支持了
      • 但是虽然标准已经发布了,但是很多 JavaScript 运行换将还不支持
      • Node 也是只在 8.5 版本之后才对 EcmaScript 6 module 进行了支持
      • 后面学 Vue 的时候会去学习
      • less 编译器 > css
      • EcmaScript 6 -> 编译器 -> EcmaScript 5
      • 目前的前端情况都是使用很多新技术,然后利用编译器工具打包可以在低版本浏览器运行。
      • 使用新技术的目的就是为了提高效率,增加可维护性
  • 内心极度脆弱。。。有心杀敌 无力回天,总感觉时间不够用。
    • 不要猥琐发育,就得浪
  • 虽然比较多 但是因为老师讲的很清晰 还是愿意去写的 对于 node.js 的奥义 封装异步的API 就是需要多练
  • 老师讲的很清晰 讲课也很洒脱 老师是不是被夸的已经习惯了 后面讲的回掉函数有点懵了
  • 老师讲的很好,思路清晰,项目跟着老师的笔记一步一步敲,so easy
  • 觉得老师讲课真的超级棒啊 传智的实力担当 双击没毛病 老铁666
  • 都坐下 基本操作 哇,老师,一般敢说这句话的都是大神,我还是个菜鸟,学的那是一脸懵逼
  • 有点懵,看着老师的思路做,可是还是不知道从何入手,唉。。。
    • 本着达芬奇画鸡蛋的精神
    • 《使徒行者》三哥
    • 《反黑》陈小春
      • 卧底 8年卧底
      • 文职工作
      • 报了电脑版
      • 吃饭都在看书
      • 学习 -》吃饭也是看书
      • 边角余料
  • var router = require('./router') 这一步不是加载router.js并执行该文件吗 为什么还要执行app.use(router) app.use 不是开放静态资源吗 app.use(router)在这里是什么意思,挂载到 app 服务中的意思是? module.exports = app 也不懂
    • 这里涉及到一个中间件的概念
    • app.use 不仅仅是用来处理静态资源的
    • 还可以做很多工作
    • 配置 body-parse 也是通过 app.use 来配置的
    • 这叫中间件,其中有一套规则
  • npm init --yes 生成一个package.json 文件 npm --save 文件名 又生成一个package-lock.json文件,又生成的文件和初始化生成的文件有区别吗?
    • 当你安装包的时候,新版的 npm 还会自动生成一个文件:package-lock.json
  • 早上听的还可以,下午感觉一头蒙,还好老师讲了晚上自己做案例的具体步骤,不然感觉无从下手,还是反馈多一点好,还可以回顾回顾,不然感觉老师一天讲的知识太多了,消化不了,嘤嘤嘤~~~
  • 其实拖堂的效率也不高啊。。可能是我天资愚笨
    • 对自己有信息
    • 撸起袖子加油干、一张蓝图绘到底
  • 老师你好,每节课的事件有点长,上课时间长注意力就容易模糊。听课效率确实有问题,有时候同桌都快憋不住了,为了不丢下知识点,依旧在憋着,好担心...
  • 为什么模板引擎在app.js中引入之后在router.js中不引入可以直接使用,而express还需要在router.js中再引入一次 app.js中路由器挂载不是很懂 router.js中为什么要创建一个路由器容器,不知道作用是干什么的 es6中的find方法不是很懂
    • 中间件
    • EcmaScript 6 的 find 方法
  • 老师,你后来讲的回调函数那里,关于增删改查案例一个已经够呛了,你竟然在最后都讲完了; 虽然增删改查文件的操作在php之前讲过,但是真的忘了,而且php学的也不好; 还有:对于php是世界上最好的语言,我持怀疑态度,觉得它是世界上最难理解的语言; 诶!苦恼!又来了一个node,知道后边的boss都很难应付,比如什么angular、react和vue,现在其实也做好了心理准备! 来者不拒吧!看来这一个月注定是一个煎熬的日子!
    • PHP 是世界上最好的语言(贬义)
    • 一切我抗
  • 在express框架中怎么判断访问页面不存在的情况?

复习

  • 文件路径中的 / 和模块标识中的 /
  • Express 中配置使用 art-template 模板引擎
  • Express 中配置使用 body-parser
  • Express 中配置处理静态资源
  • CRUD 案例中单独提取路由模块

上午总结

  • 回调函数
    • 异步编程
    • 如果需要得到一个函数内部异步操作的结果,这是时候必须通过回调函数来获取
    • 在调用的位置传递一个函数进来
    • 在封装的函数内部调用传递进来的函数
  • find、findIndex、forEach
    • 数组的遍历方法,都是对函数作为参数一种运用
      • every
    • some
    • includes
    • map
    • reduce
  • package-lock.json 文件的作用
    • 下载速度快了
    • 锁定版本
  • JavaScript 模块化
    • Node 中的 CommonJS
    • 浏览器中的
      • AMD require.js
      • CMD sea.js
    • EcmaScript 官方在 EcmaScript 6 中增加了官方支持
    • EcmaScript 6
    • 后面我们会学,编译工具
  • MongoDB 数据库
    • MongoDB 的数据存储结构
      • 数据库
      • 集合(表)
      • 文档(表记录)
  • MongoDB 官方有一个 mongodb 的包可以用来操作 MongoDB 数据库
    • 这个确实和强大,但是比较原始,麻烦,所以咱们不使用它
  • mongoose
    • 真正在公司进行开发,使用的是 mongoose 这个第三方包
    • 它是基于 MongoDB 官方的 mongodb 包进一步做了封装
    • 可以提高开发效率
    • 让你操作 MongoDB 数据库更方便
  • 掌握使用 mongoose 对数据集合进行基本的 CRUD
  • 把之前的 crud 案例改为了 MongoDB 数据库版本
  • 使用 Node 操作 mysql 数据库

下午总结

目标

Node.js 第6天课堂笔记

知识点

  • 多人社区案例

反馈

复习

  • MongoDB 数据库

    • 灵活

    • 不用设计数据表

    • 业务的改动不需要关心数据表结构

    • DBA 架构师 级别的工程师都需要掌握这项技能

      • 设计

      • 维护

      • 分布式计算

  • mongoose

    • mongodb 官方包也可以操作 MongoDB 数据库

    • 第三方包:WordPress 项目开发团队

    • 设计 Schema

    • 发布 Model(得到模型构造函数)

      • 查询

      • 增加

      • 修改

      • 删除

  • Promise

    • http://es6.ruanyifeng.com/#docs/promise

    • callback hell 回调地狱

    • 回调函数中套了回调函数

    • Promise(EcmaScript 6 中新增了一个语法 API)

    • 容器

      • 异步任务(pending)

      • resolve

      • reject

    • then 方法获取容器的结果(成功的,失败的)

    • then 方法支持链式调用

    • 可以在 then 方法中返回一个 promise 对象,然后在后面的 then 方法中获取上一个 then 返回的 promise 对象的状态结果

上午总结

下午总结

总结

  • path 模块

  • dirname 和 filename

    • 动态的 获取当前文件或者文件所处目录的绝对路径

    • 用来解决文件操作路劲的相对路径问题

    • 因为在文件操作中,相对路径相对于执行 node 命令所处的目录

    • 所以为了尽量避免这个问题,都建议文件操作的相对路劲都转为:动态的绝对路径

    • 方式:path.join(__dirname, '文件名')

  • art-template 模板引擎(include、block、extend)

    • include

    • extend

    • block

  • 表单同步提交和异步提交区别

    • 以前没有 ajax 都是这么干的,甚至有些直接就是渲染了提示信息出来了

    • 异步提交页面不会刷新,交互方式更灵活

  • Express 中配置使用 express-session 插件

  • 概述案例中注册-登陆-退出的前后端交互实现流程

目标

Node.js 第7天课堂笔记

知识点

  • 上午

    • 多人社区案例

    • Express 中间件

  • 下午

    • Vue

反馈

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="javascript" cid="n18" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: Monaco, Consolas, &quot;Andale Mono&quot;, &quot;DejaVu Sans Mono&quot;, monospace; margin-top: 0px; margin-bottom: 20px; font-size: 0.9rem; display: block; break-inside: avoid; text-align: left; white-space: normal; background: rgb(51, 51, 51); position: relative !important; padding: 10px 10px 10px 30px; width: inherit; color: rgb(184, 191, 198); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">funtion extend (source, target) {
 for (var key in source) {
 target[key] = source[key]
 }
}

var obj1 = {
 foo: 'bar'
}

var obj2 = {
 name: 'Jack'
}

// obj2 就拥有了 obj1 的所有成员了
extend(obj1, obj2)</pre>
  • 唉............

  • 老师我想问下 那个操作文件路径不受打开命令执行node命令所属路径影响什么意思,是可以在任意窗口打开都可以访问到吗。。。。。

  • 慢点 心急吃不了热豆腐

  • 老师讲的很好 很清晰 希望老师下午第一节上课时间短点 第一节很困 上课时间太长听课效率有点低

  • 老师 写案例的时候 一个文件的代码量多了 可不可以把字体稍微调小点便于看全局结构 有时候感觉自己连不上

  • extend还不是很理解

    • 模板继承

    • extend 把复制过来

    • layout

    • index (extend layout)

    • index 就具有了 layout 的内容

    • index 还可以有自己的自定义内容

  • 能不能把命令系统地罗列一下,@ 0 @

  • 听得时候都差不多听懂了,可是自己做的时候发现不知道从何入手,即使是看着老师的需求与代码,也根本不懂怎么写了,感觉自己听完了就全都忘光了,很郁闷!

  • 我现在学习的感觉就像 你是个俄国人,教我了一句外语,你已经重复 了很多遍,我也努力再听,但是当你说完的那一刻,我就完全不知道你说了什么。就是仅仅过了一耳朵,再加上内容太多,我已经感觉完全跟不上了,怎么办,我有点崩溃。怎么破

    • 上帝撒了一把智慧,可惜我打了一把伞

    • 多花时间、废寝忘食

  • 老师你是不是喜欢Anglebaby?我同桌问的,她是个女的

    • Angelababy
  • 如何在浏览器中模拟所谓的art-template高级技术?关于浏览器操作cookie的插件如何使用,需要注意些什么?还可以安装一些什么谷歌浏览器插件,有助于提高开发效率或模拟项目、测试的实用插件!

  • 文件引入有规则吗,像router.js中,需要重新引入第三方模块express,但是body-parser在routre页面也使用了呀,但是怎么不用引入

    • 这主要是中间件的原因
  • req.session对象不清楚 希望老师再讲讲

    • req.session.xxx = xxx

    • req.session.xxx

    • Session 是基于 Cookie 实现的

  • session 那块还是不怎么明白

  • 课间下课尽量要准时,特别是上午第一节课比较困,听课效率低,反正下课次数固定,也不会让上课时间减少。 下午5点半增加上课时间多多益善

  • 思路有点乱,有些小地方不明确,总的来说练得太少

  • mongoose中的Schema用的不熟练

    • 多写写
  • 如果先启动node服务,再开启数据库,数据库服务开启了,但是数据库并没有连接,这样会出现所有的操作都会失效的情况,必须打开新的命令行使用mongo命令手动连接数据库 反过来,如果先开启数据库,再开启node服务,就不会出现这样的问题,因为user.js代码中mongoose.connect('mongodb://localhost/test', { useMongoClient: true })自动连接了数据库,刚开始以为数据库竟然和node产生了依赖,原来并不是! 希望老师控制每节课的上课时间,一节课集中精力的时间最多20分钟,接下来的20分钟基本只有一半的效率,后面的时间效率只会指数减小,所以希望老师能在45分钟左右就休息一次,也能提高效率; 老师讲的很细,很认真,也很负责,希望能在最后一个月的时间学好最重要的内容,就像你说的,因为刚好遇见你!

    • 你说的对,加油。
  • 一到数据库就蒙。数据库始终连接不上去。我觉得不知道我数据库都学了什么?_?

  • nice!


复习

  • path 模块

  • dirname 和 filename

    • 动态的 获取当前文件或者文件所处目录的绝对路径

    • 用来解决文件操作路劲的相对路径问题

    • 因为在文件操作中,相对路径相对于执行 node 命令所处的目录

    • 所以为了尽量避免这个问题,都建议文件操作的相对路劲都转为:动态的绝对路径

    • 方式:path.join(__dirname, '文件名')

  • art-template 模板引擎(include、block、extend)

    • include

    • extend

    • block

    • 动手写一写

  • 表单同步提交和异步提交区别

    • 字符串交互

    • 请求(报文、具有一定格式的字符串)

    • HTTP 就是 Web 中的沟通语言

    • 服务器响应(字符串)

    • 01

    • 服务器端重定向针对异步请求无效

  • Express 中配置使用 express-session 插件

    • 插件也是工具

    • 你只需要明确你的目标就可以了

    • 我们最终的目标就是使用 Session 来帮我们管理一些敏感信息数据状态,例如保存登陆状态

    • 写 Session

      • req.session.xxx = xx
    • 读 Session

      • req.session.xxx
    • 删除 Session

      • req.session.xxx = null

      • 更严谨的做法是 delete 语法

      • delete req.session.xxx

  • 概述案例中注册-登陆-退出的前后端交互实现流程


上午总结


下午总结


总结


目标

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,509评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,806评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,875评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,441评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,488评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,365评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,190评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,062评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,500评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,706评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,834评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,559评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,167评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,779评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,912评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,958评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,779评论 2 354

推荐阅读更多精彩内容