英伦对决豆瓣高清百度云盘资源 谁有 万分感谢

盘点15款有学习价值的开源小项目 - HelloWorld
对于初学者来说,小型开源项目更容易理解和学习,那么目前有哪些值得学习的小型开源项目?本文收集整理了知乎上网友推荐的一些不错的小型项目,代码基本都在5000行以内,感兴趣的朋友可以研究下~
Sea.js是一个遵循CommonJS规范的JavaScript模块加载框架,可以实现JavaScript的模块化开发及加载机制。Sea.js 追求简单、自然的代码书写和组织方式,代码非常精简。
Koa 是下一代的 Node.js 的 Web 框架。由 Express 团队设计。旨在提供一个更小型、更富有表现力、更可靠的 Web 应用和 API 的开发基础。
pssh 提供了并行版本的 OpenSSH 工具,特别适合用来控制有大量机器需要连接的情况,包括并行版本的 ssh、scp、rsync 和kill 命令。该项目是Python写的,代码清晰而简短,数据结构定义的很清楚,看了之后你会称赞的。
在写代码的时候,有时候会需要查看某个函数/类/变量在哪些地方被使用过。该项目用emacs lisp语言写成,可实现在项目目录下,所有指定扩展名的文件中,搜索当前光标所在的单词。
该项目可实现emacs中一键编译的需求。在项目目录下寻找Makefile文件,并执行make命令进行编译。 语言:emacs lisp;代码行数:19。
很精简的 signal slot的实现,跨平台。这个源码有2000多行,但是一大半是为了模板适配不同个数的参数的代码,干货不足1000行。
uC/OS II(Micro Control Operation System Two)是一个可以基于 ROM 运行的、可裁减的、抢占式、实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器,是和很多商业操作系统性能相当的实时操作系统(RTOS)。
SQLite是遵守ACID的关联式数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。SQLite亦可以作为桌面数据库使用。
thttpd 是一个小型的、简单的、可移植的、快速以及安全的HTTP服务器。
boa是一个小型的web服务器,可以用于多种平台,在嵌入式中比较常见。
4个函数实现的c编译器,大约500行。基本上已经比较完备了,可以自己编译自己。
GLib 是一个包含很多有用的 C 程序的开发包,例如树、哈希、列表等。GLib 之前是属于 GTK 工具包的一部分,现在独立出来成为单独项目。
不到三百行,用于改善 node 异步回调语法。
shadowsocks 是一个基于 python 的轻量级 socks 代理软件(谁用谁知道)。
这是一本牛书aosabook的续集,500 Lines or Less的源码。里面每一章的代码不超过500行,实现了web服务器、爬虫、OCR等等"大型系统",每一章由不同领域的大牛完成。看看作者列表,可以说是软件领域的名人堂。
点击进入:2016 年,新 Node 项目注意点_Linux编程_Linux公社-Linux系统门户网站
你好,游客
2016 年,新 Node 项目注意点
作者:gaohailang
2016年开发 Node 项目,会有什么不一样吗?! 当然随着语言,工具,运行环境,开发方式的不断变化,你的 Node 项目当然也需要不断的与时俱进,那么我们就依次来看看需要注意哪些问题吧。
现在开始使用 ES2015
异步函数支持回调惯例和Promise新写法
使用标准的 JavaScript 代码风格
Web 应用开发的十二条军规
始终用 npm init 开始新项目
文件名始终小写
智能的 .npmrc 和正确的版本管理做法
及时更新依赖
选择合适的数据库
监控你的应用程序
使用构建系统
NPM 生命周期钩子
管好垃圾回收
使用长期支持的 Node.js 版本
使用语义化的版本号
持续学习和跟上潮流
现在开始使用 ES2015
箭头函数模板字符串rest参数,扩展运算符(spread),函数默认值变量的解构赋值generator 和 promisesmaps,sets 和 symbols
这些新语法大部分都被 Node.js V4 支持(参考)[]在服务器端的推荐使用新的 node 解释器支持的语法,或者可以用babel作为compile层(具体做法参考)
// 从 express's req.query 解构 特定参数 ?page=2&size=10&word=测试
let {page, size, word} = req.query;
异步函数支持回调惯例和Promise新写法
过去,当Promise没有成为Node默认搭载的语法时,推荐模块通过导出 error-first callback 的接口形式。但是现在通常需要支持两种形式:
const fs = require('fs')
function readPackage(callback=noop) {
return new Promise((resolve, reject)=&{
fs.readFile('./package.json', (err, data)=&{
reject(err)
return callback(err)
resolve(data)
return callback(null, data)
过去很长时间,在 node 中一般有两种方式来管理异步流:callback回调和 streams 流前者可以用辅助我们异步操作的 async 类库后者可以用through, bl or highland 这些类库但是随着 es6的 generator和promise的到来,甚至es7的 await/async 内建关键字的到来,情况变了。 详细请看
完善合理的错误处理让你的服务更加强健。知道何时crash,然后是仅仅catch后忽略,还是记下调用栈打入log后重试,甚至是需要重启?我们通常需要区别对待 programmer error, operational errors:前者直接重启(事实上在开发阶段就该发现,并且线上通过 logger 定位),因为程序员写的bug,如果不及时重启会导致应用的状态难以推演,从而发生更多更大的问题而后者,通常不是bug,而是没有考虑全的case。如外部请求超时了,外部依赖的数据库连不上了,甚至所在运行的机器磁盘写满了,要访问写入的文件暂时不存在了。这些case一般需要在程序里加上特定的fallback/polyfill 来处理。如对于超时的重试几次,对于不存在的文件先试着创建新文件,对于总是塞满磁盘的log,通过logstash和logrotate去处理。
回调中的错误处理
error-first 约定的callback,始终记得在函数开始检查第一个err是否存在,然后进行合适的处理(当然也可以通过 next(e) 传入到调用栈的最后统一处理)
Promise中的错误处理
始终记得在 promise 调用链的最后加上 catch 来处理异常
使用标准的 JavaScript 代码风格
过去我们使用 jslint, jshint, jscs 来作为我们的代码风格检查工具,但是随着 es6 的流行,还有一些新的习惯的养成,我们推荐使用 eslint 工具,同时配合 eslint-plugin-standard 插件
"plugins": [
"standard"
Web 应用开发的十二条军规
来自于 Rails 社区的血泪经验,但是大部分也是适用于我们Node项目 (一些实践可能在新的docker部署下会有小调整)
始终用 npm init 开始新项目
通过 npm init 来初始化你的node项目,通过promt 确定你的项目名称,开发者信息等(当然你可以通过 --yes 旗标来跳过)Tip: 主要你应该总是显示指名你的node engines 版本(node -v),确保你的开发环境,测试环境和线上环境是用同一版本的 node.
"engines": {
"node": "4.2.1"
文件名始终小写
因为在 OSX 和 Windows 系统中,MyClass.js 和 myclass.js 没有任何区别,Linux 则会区分。所以为了你写的代码在不同操作系统是可移植的(在使用 require 来引入模块确保语句是一致明确的),所以始终保持小写 - my-class.js
智能的.npmrc 和正确的版本管理做法
默认上, npm 在安装新的依赖的modules,默认不会加入到package.json中。同时,modules的版本号不是严格锁死的(^尖角号来确保大版本保持一致)这样会造成一些问题,如在发布时才发现没有把依赖写入到package.json中,造成线上缺少必要的模块,线上部署发现用的不是相同的modules,导致莫名其妙的问题和大量的depricated warning警告。
所以安装新依赖推荐这样的写法:npm install foobar --save --save-exact或者写入.npmrc 这样下次 npm install 就不会犯错啦
$ npm config set save=true
$ npm config set save-exact=true
$ cat ~/.npmrc
当然啦,如果如果希望更灵活的依赖控制,可以通过 npm shrinkwrap 命令生成 npm-shrinkwrap.json 加入到版本库中,这样在build环境构建也能保证版本统一。
及时更新依赖
上面的版本锁死让你面对依赖模块的时候更加从容,但是要记得保持定期更新依赖,从而获得修复bug和性能优化功能完善的更新。可以每周利用 npm outdated 或
选择合适的数据库
大部分新的noder,在选择数据库,喜欢选择Mongodb。它的确很不错,但是 Mongodb 不是唯一的选择、你应该根据你的应用场景来选择:
你的数据是否结构化的
你的数据操作是否要支持事务
你数据是否需要持久化
从而选择不同的数据库:如 PostgreSQL, Redis, LevelDB 等等
监控你的应用程序
你要对你的线上应用的运行状况了如指掌(CPU,Memory,日志等),对一些突发情况需要及时获得通知。很多开源项目和SaaS产品都提供完善强大的监控服务,如Zabbix, Collectd, ElasticSearch 和 Logstash. 甚至结合Cabot给微信公众号发消息提醒等等
使用构建系统
现在的JavaScript的工具链有大量的选择: Grunt, Gulp, Webpack等。譬如在团队里,我们选择 Webpack 来辅助前端开发,gulp用来处理大量其他的自动化任务(你的shell脚本也可以通过gulp-shell集成进来)。当然我们也推荐使用 vanilla build (尤其你可以结合 npm lifecycle hooks 完成很多事)
NPM 生命周期钩子
提供了很好的钩子来使得一些task实现的很优雅,我们的大量使用了这样的技巧
"postinstall": "bower install && grunt build",
"postinstall": "if $BUILD_ASSETS; then npm run build- fi",
"build-assets": "bower install && grunt build"
# 如果脚本变复杂可以单独文件:
"postinstall": "scripts/postinstall.sh& (sh 脚本中会自动可以访问到 ./node_modules/.bin 中的命令,因为该路径被加入到 $PATH)
管好垃圾回收
v8默认使用 lazy 和 贪婪的 GC. 有时候等到1.5GB 自由才去回收未被使用的内存 (所以有时候内存涨不是因为泄露还是node&s usual lazy behavior)
所以你不想自己的node应用经常把服务器的内存占满(或者你不得不调整,因为你的机器可用内存没那么多),试着使用下面的命令/proc 文件来启动 node 服务(推荐写在 .pm2config 中,正如脚手架推荐的)
web: node --optimize_for_size --max_old_space_size=920 --gc_interval=100 server.js
使用长期支持的 Node.js 版本
如果你需要在不同项目中工作,并且不同项目用的node版本还不一样,可以使用 node version manager()
使用语义化的版本号
通过三段版本数来确保把兼容性声明好。 major.minor.patch 这样的格式,不同级别的升级对API更新的要求也是不一样的。可以通过 来让版本升级更加自动化
持续学习和跟上潮流
JavaScript 和 Node.js 社区异常活跃,的确是件好事。每周都有新的工具新的理念的加入,让我们始终保持热情和技术的提升(警惕自己变成跟风狗,要取色和了解每个新东西背后的不变的本质),不要待在自己的蜜罐中,要动手做试验和学习。以下资料:
Node.js Weekly Newsletter
Microservice Weekly Newsletter
Changelog Weekly - for Open-Source news
下面关于Node.js的内容你可能也喜欢:
14.04/15.04 上安装配置 Node.js v4.0.0&
如何在 7安装Node.js
Ubuntu 14.04下搭建Node.js开发环境&
Ubunru 12.04 下Node.js开发环境的安装配置
Node.Js入门[PDF+相关代码]
Node.js开发指南 高清PDF中文版 +源码
Node.js入门开发指南中文版
Ubuntu 编译安装Node.js
Node.js 的详细介绍:Node.js 的下载地址:
本文永久更新链接地址:
相关资讯 & & &
& (03月04日)
& (02月18日)
& (02月10日)
& (03月03日)
& (02月12日)
& (01月22日)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款请问有没有比较完整的商城项目可以学习学习的啊 - CNode技术社区
这家伙很懒,什么个性签名都没有留下。
想学习做一个商城网站,有没有什么项目可以参考参考,或者各位大大们给推荐推荐这方面好的技术组合方案哈。谢谢啦
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
服务器赞助商为
,存储赞助商为
,由提供应用性能服务。
新手搭建 Node.js 服务器,推荐使用无需备案的Github上有意思的项目推荐
Github上有意思的项目推荐
Python初学者书籍、视频、资料、社区推荐
一些不错的代码
github上值得关注的前端项目
Nodejs的各种资源
一些关于 AngularJS 的博客,文章,视频,书籍等
React的各种资源
iconfont汇总
包括 c,python,Go
用 JSON 构建 API 的标准指南
twitter开发的autocomplete 插件
js实现的有限状态机框架
代码编辑器
基于 bootstrap 实现可视化布局的
离线中文版
用Flex实现常见布局
分分钟搭一个返回JSON格式REST API的测试服务器
CSS3一些兼容性的mixin:方式是在一些CSS3的属性或值前加浏览器前缀。支持 STYL, SCSS, SASS 和 LESS
polyfill(兼容浏览器API的shim)
让ie6/7支持 CSS box-sizing: border-box
让浏览器支持 CSS3: min/max-width
很酷的动画效果
各种炫的效果,用来做幻灯片不错
全屏翻页的js组件,用来做幻灯片不错
让写js的单元测试变得有趣
跨浏览器测试js工具
DOM based XSS扫描工具
检测JS代码的安全性的工具
很酷的项目
将ruby代码转化成javascript
github上项目的代码风格的统计,效果看
用js来画原型图。支持3d效果哦~
我的Github上所有
分享即可 +1积分
请登录后,发表评论
评论(Enter+Ctrl)
评论加载中...
评论加载中...
Web前端工程师
爱生活,爱Coding~
作者的热门手记
Copyright (C)
All Rights Reserved | 京ICP备 号-2

我要回帖

更多关于 英伦对决百度云资源 的文章

 

随机推荐