腾讯视频是从 2015 年开始使用 Node.js 对整站进行改造的,杨浩与同事一起从零开始一步一步把整个 Node.js 的开发运维步骤打通,搭建了一个运行于后台服务和浏览器前端之间的 Node.js 中间层用作 SSR(Server Side Rendering),以提高搜索引擎抓取的效果以及首屏展现的速度。
Node.js 只能用作中间层吗?——不,整站都可以用它来做!
Node.js 为什么值得学习?—— JSer 是真得多、完全开源、社区繁荣、有成熟的技术体系以及庞大的生态等等,就目前而言,它被广泛的用在 Web 服务(关于这个领域,业界对 Node.js 的接受程度最高)、开发工作流、客户端应用等诸多领域
Node.js 通常被用来干嘛?——常被用来做一个 BFF 层,即 Backend For Frontend(服务于前端的后端),通俗地来讲就是一个专门用于为前端业务提供数据的后端程序,而这类程序的特点是不需要太强的服务器运算能力,但对程序的灵活性有较高的要求,恰巧的是,这两个特点都正好和 Node.js 的优势相吻合。
使用 Node.js 的难点在哪里?——有很多非浏览器端的知识,如RPC调用、进程管理等等;推广使用 Node.js 的过程中会受到产品、后台、运维,甚至是你的老板等等不同角色的质疑,总之使用 Node.js 开展业务会碰上各种各样的阻力!
我们需要做什么才能搞定这些难点?
至此,你才能说服他人,配合你完成从前端到后台的一整套项目开发
主要讲解每一章的主要内容
下一节课了解什么是 Node.js !
官网是这样描述的:
如果照本宣科,显然,剩下的视频也就不用再继续看下去了!
理解这两句话,其实关键点就是加粗的描述
然而,其实暂时咩有必要知道这些!
通过这两句话引出了一些问题:
①在 Node.js 里运行 JavaScript 跟在 Chrome 里运行 JavaScript 有什么不同?
②既然是「几乎」,那就是存在有不一样的地儿哈!那不一样在哪里呢?
③人生的真谛要用自己一辈子去理解。(以前不懂道理,长大了就开始懂了)
「Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。」
「Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型。」
下一节会说,现阶段 ,Node.js 主要会被用来做什么项目!
Web 服务 —— 腾讯视频
构建工作流
为啥说「使用 Node.js 做 JS 构建工具,是最保险的选择?」
因为「 构建工具不会永远不出问题」、「 构建工具不会永远满足需求」,而 Node.js 相较于其它用Java、Ruby等语言弄得构建工具,显然学习成本更低,而且更容易维护和扩展!
开发工具 - Visual Studio Code。
游戏 - wayward。所谓沙盒游戏,拥有贼高的自由度,即创造性是该类型游戏的核心玩法,利用游戏中提供的物件制造出玩家自己独创的东西。
可扩展性——大型应用需要给使用者自定义模块的能力(创造性的体现)
客户端应用 - twitch.tv(最早的游戏直播平台)
使用 electron,你会发现,把网页变成客户端是多么简单的事儿!
预研是对预算研发或预备研发的简称。预研不等于开发,开发是立项的项目并且有严格的流程,预研是开发的必要准备
➹:做新产品分析和预研以及竞品分析,通常有哪些方法? - 知乎
如果可以很好的被搜索引擎收录
那么这就是SEO优化(搜索引擎优化)的结果
简单点说,首先是搜索引擎会收录你网页里的内容,所以内容自然是要尽可能丰富。其次当搜索引擎抓取完你的网页之后,接下来就会抓取你这个网页中出现的超链接对应的网页。这两点决定了搜索引擎爬取你网站页面的质量和数量,也决定了你网站在搜索引擎里的权重。
我主要用node.js做游戏服务器的。从操作系统角度,比如8核心cpu,我开启4个进程做逻辑服务器,2个进程当网关承载客户端连接,2个进程做其他的服务,比如排行榜,每日登录等业务, 用pomelo之类的框架。 这样也是可以充分利用多核心的,为何大家都不屑于node.js做游戏服务器呢?
充分利用多核心只是解决计算性能问题。生产环境中还会涉及服务器稳定性,代码可维护性,开发人员的习惯等等。相信等到这些问题得到充分考虑,node.js游戏服务器实际应用也是可能的。最后一章我会尽可能讨论一下这方面。
同构是指同开发一个可以跑在不同的平台上的程序。例如开发一段 js 代码可以同时被基于 node.js 开发的 web server 和浏览器使用。
目前是没有关于数据库方面的安排的,如果后面发现时间有余量,可能会考虑加上
可以这么理解。不过所有http get服务都可以理解为就是ssr。只是有些渲染html有些渲染json。