We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
公司大前端团队准备上 Node 了,激动人心.所以首先需要预研一下 Node 的应用场景和能力范围,探索 Node 生态跟业务需求结合起来的方式.
Node 是基于 V8 JavaScript 引擎的 JavaScript 执行器. Node 采用事件驱动和非阻塞 I/O 模型达到轻量和高效,并拥有庞大的模块包生态 -- npm.
Node 在高并发轻 CPU 场景性能比 Java 和 PHP 好.
一门编程语言的特性和性能会趋向一致,剩下的就看选择.
阿里的很多 Node 服务,并不是不能用 Java 做,而是前端工程师在自己能力范围内把事情做了,而且做得蛮好的. -- Winter 在 TFC 致词,我听到的大意
使用 Node 技术栈,小团队可以更快把事情做成.
需要一名 Node工程师时,在2年 PHPer 和 2年 FE 间会毫不犹豫选择 PHPer. -- 说明写 Node 服务端, JS 语言不是重点,服务端开发的经验和能力才是
Node 作为 Web 服务器,连接后台数据库/文件系统,接受网络请求,处理业务逻辑,提供静态资源和业务接口.
在服务器(Java/PHP)与浏览器(JS)的中间架一个 Node 中间层.Node 中间层提供直出,接口转发,静态资源等,属于前端范畴,由前端维护.
在前后端接口分离(前后端解耦)情况下,在客户端访问页面时,服务器拉取接口数据,并将数据嵌入页面返回,称为直出.如果返回的是数据和模板,在前端渲染,称为数据直出;如果后端根据数据渲染出页面,直接返回页面,称为页面直出.
Node 中间层代理后台接口,后台接口提供原子 RESTful 接口,前端根据需要组合使用.Node 调用内部接口使用 HTTPS/RPC 等. 参考: 接口聚合的简单研究
关注点在于 Node 的开发和部署方式
关注 Node 层数据的落地,作为其他 Node 层功能的基础支撑.
What companies are using Node.js in production node.js能开发大型网站吗 -- 国外使用情况
我司没有历史包袱 我们没有直出服务,没有 Node 服务,所以在提升性能,提升用户体验,降低开发成本上,基本可以无痛选择 Node 技术栈.
我司没有积累
Node 服务层的能力是非常强大的,结合我司业务,可以实践的工程还是很多的.以下为头脑风暴结果,具体开展需要做可行性分析,需求评审,架构规划,功能划分,开发计划等等工作.
客户端对接口的访问,先经过 Node 接口中间层,由中间层代理接口服务.
微信商城和 App 的手机专区已经使用了服务端直出,可以保持关注和迭代.
创业团队撸 Node (科普贴,非常有意思)
2017,我们来聊聊 Node.js
PayPal 的 Node.js 实践 (Java 和 Node 并行,渐进)
Node.js 在广发证券(介绍架构和微服务)
前后端分离的思考与实践
淘宝前后端分离实践(定义前后端边界)
The text was updated successfully, but these errors were encountered:
No branches or pull requests
背景
公司大前端团队准备上 Node 了,激动人心.所以首先需要预研一下 Node 的应用场景和能力范围,探索 Node 生态跟业务需求结合起来的方式.
Node.js
Node 是基于 V8 JavaScript 引擎的 JavaScript 执行器. Node 采用事件驱动和非阻塞 I/O 模型达到轻量和高效,并拥有庞大的模块包生态 -- npm.
技术特点
IO操作: 数据库操作(连接数,机器性能等)、缓存服务、网络IO、文件读写等
应用特点
业界观点
应用场景
基本功能: Web 服务器
Node 作为 Web 服务器,连接后台数据库/文件系统,接受网络请求,处理业务逻辑,提供静态资源和业务接口.
前后端分离
概念
在服务器(Java/PHP)与浏览器(JS)的中间架一个 Node 中间层.Node 中间层提供直出,接口转发,静态资源等,属于前端范畴,由前端维护.
特点
注意区分
直出
概念
在前后端接口分离(前后端解耦)情况下,在客户端访问页面时,服务器拉取接口数据,并将数据嵌入页面返回,称为直出.如果返回的是数据和模板,在前端渲染,称为数据直出;如果后端根据数据渲染出页面,直接返回页面,称为页面直出.
直出优点
Node 直出优点
这点前文已经有阐述.
对于复杂的页面,通常需要代码模块化和功能组件化,前端 MVVM 框架适合组件化直出的场景.
借助前端 MVVM 框架,前端工程可以实现同构,同时支持服务端渲染和客户端加载.
接口聚合
Node 中间层代理后台接口,后台接口提供原子 RESTful 接口,前端根据需要组合使用.Node 调用内部接口使用 HTTPS/RPC 等.
参考: 接口聚合的简单研究
微服务
关注点在于 Node 的开发和部署方式
数据持久化
关注 Node 层数据的落地,作为其他 Node 层功能的基础支撑.
业界实践
阿里
腾讯
百度
将地图数据渲染成图片,返回客户端 -- node-canvas实现百度地图个性化底图绘制
美团
其他公司
国外
What companies are using Node.js in production
node.js能开发大型网站吗 -- 国外使用情况
我司的实践点
现有条件
我司没有历史包袱
我们没有直出服务,没有 Node 服务,所以在提升性能,提升用户体验,降低开发成本上,基本可以无痛选择 Node 技术栈.
我司没有积累
为什么是 Node
可实践工程
Node 服务层的能力是非常强大的,结合我司业务,可以实践的工程还是很多的.以下为头脑风暴结果,具体开展需要做可行性分析,需求评审,架构规划,功能划分,开发计划等等工作.
页面配置平台
如: 对一个活动页面,生成一个 url 入口,外部服务统一调用该入口.配置平台设置映射规则:起止时间,省市区域,渠道等.活动的上下线和切换不需要开发改动发版本.
简单可组合的页面搭建平台,生成活动页面.
如:我们的帮助中心,每次文本改动需要前端开发,使用静态页面配置平台,可以有产品人员进行文本修改,然后由直接生成.
接口中间层
客户端对接口的访问,先经过 Node 接口中间层,由中间层代理接口服务.
如: 对于用户状态获取/商城等展示前需要请求多个接口的页面,可以使用接口聚合.后端只需要提供原子接口,而聚合由前端根据业务场景开发.
如: 用户申请验证,目前的趋势是使用拍照或活体,可能会上传视频,在不好的网络条件下,需要分片和断点续传,在 Node 层可以制定接口获取大文件,再内网提交给后端.甚至可以考虑使用 Web Socket.
服务端直出
微信商城和 App 的手机专区已经使用了服务端直出,可以保持关注和迭代.
其他场景
技术选型
服务端部署
开发注意点
Node 入门
大搜车 Nodejs 线上服务稳定性保障体系
References
创业团队撸 Node (科普贴,非常有意思)
2017,我们来聊聊 Node.js
PayPal 的 Node.js 实践 (Java 和 Node 并行,渐进)
Node.js 在广发证券(介绍架构和微服务)
前后端分离的思考与实践
淘宝前后端分离实践(定义前后端边界)
EOF
The text was updated successfully, but these errors were encountered: