Node.js Manual & Documentation`node_modules` Folders 从 `node_modules` 目录中 加载 Optimizations to the `node_modules` Lookup Process 优化 `node_modules` 的查找过程 o Folders as Modules 目录作为模块 o Caching 缓存 o All Together... 总结一下... o [callback]) server.close() server.maxConnections server.connections File System 文件系统模块 o fs.rename(path1, path2, [callback]) o fs.renameSync(path1, path2) o fs.truncate(fd, len they do not clash. 这允许程序本地化他们的依赖关系,避免发生冲突。 Optimizations to the `node_modules` Lookup Process 优化 `node_modules` 的查找过程 When there are many levels of nested dependencies, it is possible for these0 码力 | 153 页 | 1.21 MB | 1 年前3
ThinkJS 2.2 中文文档与 sails 对比 sails 也是一个提供整套解决方案的 Node.js 框架,对数据库、REST API、安全方面也很多封装,使 用起来比较方便。 但 sails 对异步回调的问题还没有优化,还是使用 callback 的方式,给开发带来很大的不便,导致 项目中无法较好的使用 ES6/7 特性。 ThinkJS 的不足 上面说了很多 ThinkJS 的优点,当然 ThinkJS 也有很多的不足。如: 里所有的类都会继承 think.base 基类。 使用 Babel 编译 虽然现在的 Node.js 版本已经支持了很多 ES6 的特性,但这些特性现在还只是实现了,V8 里还没 有对这些特性进行优化。如: */yield 等功能。 所以建议使用 Babel 来编译,一方面可以使用 ES6 和 ES7 几乎所有的特性,另一方面编译后的性 能也比默认支持的要高。 使用 async/await 无法和 Arrow Function 一起使用。 3、 */yield 调用另一个 */yield 时,需要使用 yield * ,带来不便。 4、目前 V8 对 */yield 还没有做优化,最好也通过 Babel 来编译。 所以完全可以使用 ES7 里的 async/await 来代替 */yield ,然后使用 Babel 编译来运行。 升级指南 本文档为 2.1 到 2.20 码力 | 277 页 | 3.61 MB | 1 年前3
Node 的设计错误js" • 不不必要的不不明确。 • 不不是浏览器器 JavaScript ⼯工作⽅方式。不不能在脚本标记 src 属性中省略略“.js”。 • 模块加载器器必须在多个位置查询⽂文件系统,试图猜测⽤用户的意图。 遗憾:index.js 我认为它很可爱,因为有 index.html。 它不不需要复杂的模块加载系统。 在 require ⽀支持了了 package V8上⼀一个安全的 TypeScript 运⾏行行时 Deno ⽬目标:安全 • 利利⽤用 JavaScript 是⼀一个安全沙箱的事实。 默认情况下,脚本应该在没有任何⽹网络或⽂文件系统写访问的情况下运⾏行行。 ⽤用户可以选择通过标志访问:--allow-net --allow-write 这允许⽤用户运⾏行行不不可信的实⽤用程序(例例如就像⼀一个 linter) •0 码力 | 28 页 | 767.84 KB | 1 年前3
NodeJS 中文文档 V0.2.3请注意,执行不信任的代码(untrusted code)是一项需要技巧的工作。script.runInNewContext 函数非常有用,它可 以在一个单独的线程中执行不信任的代码防止全局变量被意外修改。 File System 文件系统 (注:同步与异步方式是指同步或异步于程序执行,并非函数彼此之间的同步关系。) 文件的 I/O 是由标准 POSIX 函数封装而成。需要使用"require('fs')"操作这个类。所有的方法设有异步方式和同步 path, [callback]) [callback]) [callback]) [callback]) 对于 unix domain datagram xockets 来说,他的目标地址是一个使用文件系统表示的路径名,callback 作为一个可选 项会在系统调用 sendto 完毕后被触发。除非 callback 被触发,否则重复使用 buf 是很不安全的。要注意除非这 个 socket 已经使用0 码力 | 62 页 | 542.14 KB | 1 年前3
Node.js在YunOS中的最佳实践 摘要 • YunOS: 万物互联 • YunOS选择Node.js • Node.js在YunOS中的最佳实践 – 对IO优先的Looper机制的改造和优化 – SAB + Worker机制的实践 – 性能优化的实践 2 3 万物互联 4 Cloud App应用场景化 5 CloudApp JS HTML /CSS Page JS Agil-UI ? CPU密集的计算场景中存在性能问题 (单线程,事件驱动,GC效率低) ? Node.js在YunOS中的最佳实践 10 对IO优先的Looper机制的改造和优化 难点: 1. Node.js的消息循环机制完全由IO事件来驱动 2. 终端设备的场景在UI渲染及非IO任务的及时响应的需求 Node.js的消息循环: 11 Pending Queue Main Worker mem_fd SharedArrayBuffer postMessage() onmessage() 14 Worker + SAB举例: 15 性能优化的实践(一) JavaScript to na(ve: 将系统级JS模块合并加载,大幅减少IO次数,提高系统整体效率。 Combine JS files Compress &0 码力 | 20 页 | 1.37 MB | 1 年前3
Node 在有赞的实践服务接⼝口 服务化 Node.js 11 如何调⽤用? Node.js 12 ⽅方案 2:Node 直接⽀支持 Java Dubbo 接⼝口调⽤用 ⽅方案3:对⽅方案 2 进⾏行行了了优化 ⽅方案 1:Java 添加注解⽅方式⽣生成 Restful API 13 @POST @Path("regist") public String regist(User user) { 协议解析 ⽅方案3:对⽅方案 2 进⾏行行了了优化 21 Node ETCD Java Tether HTTP 1. 服务注册 2. 服务发现 3. 服务调⽤用 4. ⻓长链接建⽴立 Hession 数据包透传 负载均衡 服务调⽤用 120.0.0.1:8680 Hession 协议解析 ⽅方案3:对⽅方案 2 进⾏行行了了优化 22 Node ETCD Java 服务发现 3. 服务调⽤用 4. ⻓长链接建⽴立 Hession 数据包透传 负载均衡 服务调⽤用 120.0.0.1:8680 Hession 协议解析 如何优化? Node 调用 Tether 如何优化的? 23 24 const Service = require('../base/BaseService'); class GoodsService extends0 码力 | 29 页 | 945.50 KB | 1 年前3
全栈⼯程师之路 Node.js开发速度 • 稳定 Node.js 好处 • 同样不优化,性能⽐比⼤大部分语⾔言好。即使优化,也⽐比 其他语⾔言简单,⽐比如Java、go • 有⾜足够多的选择和架构的平衡 • 如实在不够,Java 补 简单?难? • 可以采⽤用⾯面向过程 • 可以⾯面向对象 • 可以函数式 快?慢? • 执⾏行效率,同样不优化,性能⽐比⼤大部分语⾔言好。 • 开发效率,Node ⼩小步快⾛走,⼀一次只上⼀一样新技术; • 形成梯队,即可准备上新东⻄西; • 善⽤用 npm,实现 3 化: • 模块化、 • 最⼩小化、 • 服务化 Part 2:快速开发实践 业务边界优化 创业公司有很多可变性,要做的系统也⽆无数,如何保证业 务系统的边界是⾮非常难的,我们其实⾛走了很多弯路 静态api理论 需求 设计 后端 API App 开发 测试 交付 常 规0 码力 | 50 页 | 1.35 MB | 1 年前3
ThinkJS 3.0 中文文档thinkjs.org/zh-cn/doc/3.0/router.html ,我们得到的初始 pathname 为 /zh-cn/doc/3.0/router.html 。 有时候为了搜索引擎优化或者一些其他的原因, URL 上会多加一些东西。比如:当前页面是一个 动态页面,我们在 URL 最后加了 .html,这样对搜索引擎更加友好,但这在后续的路由解析中是无 用的。 ThinkJS 里提供了下面的配置可以去除 publish,字段 comments 的最⼩小值 return this.where({status: 'publish'}).min('comments'); } } 查询缓存 为了性能优化,项目中经常要对一些从数据库中查询的数据进行缓存。如果手工将查询的数据进 行缓存,势必比较麻烦,模型中直接提供了 cache 方法来设置查询缓存。如: module.exports = class0 码力 | 129 页 | 2.12 MB | 1 年前3
Egg & Node.js 从⼩⼯坊⾛向企业级开发维护很多个项⽬目,每个项⽬目都需要复制拷⻉贝诸如 gulpfile.js / webpack.config.js 之类的⽂文件。 ▸ 每个项⽬目都需要使⽤用⼀一些相同的类库,相同的配置。 ▸ 在新项⽬目中对做了了⼀一个优化后,如何同步到其他项⽬目? ▸ 紧急修复后如何快速升级所有项⽬目? ▸ 你的团队是否需要: ▸ 统⼀一的技术选型,包括基础措施,插件,模板,数据库 … ▸ 统⼀一的默认配置 / 统⼀一的部署⽅方案0 码力 | 70 页 | 7.57 MB | 1 年前3
ThinkJS 1.2 中文文档压缩的话那么就不能使 ⽤用该功能了。 空操作是指系统在找不到请求的操作⽅方法的时候,会定位到空操作 ( __call ) ⽅方法执⾏行,利⽤用这个机制,可以实 现错误⻚页⾯面和⼀一些 url 的优化。 // 前置和后置操作 module.exports = Controller(function(){ return {0 码力 | 104 页 | 1.29 MB | 1 年前3
共 10 条
- 1













