`
司徒正美
  • 浏览: 13587 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

公开我的开源项目newland.js

阅读更多

newland.js是一个node.js MVC框架,这个MVC架构只是针对它的后端部分而已。当然有人立即会提出怀疑,世界已经有这么MVC框架,你的亮点在哪啊?回答通常有两种:重复造轮子的意义,与新框架的特性。

是的,重造轮子,世界无时无刻地造轮子,造轮子的人为了编造了许许多“藉口”,我觉得最美妙的藉口是最近多《GTF: Great Teacher Friedman 》读的东西,我觉得光是他说的那一点就能让许多人闭嘴了——


当然,重新发明东西并不会给我带来论文发表,但是它却给我带来了更重要的东西,这就是独立的思考能力。一旦一个东西被你“想”出来,而不是从别人那里 “学”过来,那么你就知道这个想法是如何产生的。这比起直接学会这个想法要有用很多,因为你知道这里面所有的细节和犯过的错误。而最重要的,其实是由此得 到的直觉。如果直接去看别人的书或者论文,你就很难得到这种直觉,因为一般人写论文都会把直觉埋藏在一堆符号公式之下,让你看不到背后的真实想法。如果得到了直觉,下一次遇到类似的问题,你就有可能很快的利用已有的直觉来解决新的问题。


而这一切都已经发生在我身上。比如,在听说 ANF 之后,我没有看 Amr Sabry 的论文,只把原来的 CPSer 程序改了一点点,就得到了 ANF 变换,整个过程只花了十几分钟。而在 R. Kent Dybvig 的编译器课程上,我利用 CPS 变换里面的直觉,改造和合并了 Dybvig 提供的编译器框架的好几个 pass,使得它们变得比原来短小好几倍,而且生成很不错的代码。


现在我仍然是这样,喜欢故意重新发明一些东西,探索不止一个领域。这让我获得了直觉,不再受别人思想的限制,节省了看论文的时间,而且多了一些乐趣。一个问题,当我相信自己能想得出来,一般都能解决。虽然我经常不把我埋头做出来的东西放在心上,把它们叫做“重新发明”(reinvention),但是出乎意料的是,最近我发现这里面其实很是隐藏了一些真正的发明。我准备慢慢把其中一些想法发掘整理出来,发表成论文,或者做成产品。


我想我是违反“发明公会”的行规了,把这天大的秘密泄漏给大家,让本来许多甘愿当一辈子码农的人奋身而已赌一把,朝食物链的顶层爬去了!



有关食物链的论断,是昨晚我在群里一个有三年经验的SOHO谈话时想到。他说,wordpress已占全球网站10%,许多人都靠wordpress的二次开发过活。有的人能月赚5000$,当然这是有稳定客户的情况下,印度阿三是强大的竞争对手。想一想wordpress的团队才多少人啊?二十来个,作为食物链的顶端他们肯定比国内的什么wordpress jam活得好!靠服务支持与流量带来的广告收入,世界范围的荣誉,被人需要的满足感……这是世上少有几种圆满生活方式了!再想rails团队,jQuery团队,spring团队, hibernate 团队……老外这么热衷搞开源,理由不一清二楚吗?!

再回归框架的本身,这是一个node.js框架。近年来,HTML5与chrome V8的优异表现,让javascript继ajax之后再次走进舞台的中心。node.js只是后随的一个大浪罢了。但这大浪由于ruby界,C++界等大牛的加入,变成海啸了。看一下github中各语言的活跃情况吧:


由于早些年javascript没有赋以处理二进制的能力,带来的致命影响是数据持久化与数据库的连接干不了,导致javascript沦为玩具语言。要知道一个网站最重要的是用户数据,不能保存用户数据就会被边缘化。其次像读取模板文件的内容,合并多个文件,写入日志等活儿对网站来说也是至关重要的!PHP的兴起,是因为他让这些工作变得更轻松更简单。node.js提供了对二进制的支持,正是javascript第二次爆发的原因。node.js模块迅速增长让专业的人做专业的事,

长久以来,前端与后端的地位就像中国的官僚系统一样可笑,外行指挥内行。从JAVA的struct时代开始,视图层的交互都是层层封装在标签库内,让人无需写javascript就能实现各种效果。然后,不是每个人都像google的员工聪明能干,那些WEB框架也不都像GWT那样出色绝伦!于是有PHP的纪元。PHP有什么优势?《XXX,21天从入门到精通》!我想这样的书名真的只能适用于PHP!入门简单,而且存在大量这样的培训中心,而且PHPer的招聘条件肯定把HTML,XML,CSS,JS等罗列进去!因此PHPer真是最廉价与实惠的工种。切图仔只能干一样,而且熟练工流动快!JSer基本是骗人的,都是jQueryer,调BUG能力为零,写出的代码维护性也为零……因此找靠谱的切图与JSer,基本上与PM一样难,当然,PM的良品率更低。但说这些有什么用呢?让专业的人做专业的事!PHP能打败JAVA在WEB的地位,是因为它更加专业。rails让PHP为之战战兢兢,是因为rails更专业,它起码有个叫Prototype.js的子项目啊,Prototype.js建立了javascript的第一个王朝,直到jQuery在四年前打败了它。PHPer的人口众多,天才也众多,抄啊抄啊,抄了rails的数据库适移,智能手脚架,COC,再武装上jQuery,终于把rubyer的起义军镇住了!但node.js的起义军怎么镇压呢?PHPer很少跑去rails阵营,但node.js的阵营每天都有人“叛逃”过去!rails团队成员兼jquery团队成员的 Yehuda Katz 搞了Ember.js,他的理念是构建“超级Web应用”所需的一切,因此向node.js进军势在必行,雅虎在用nodejs构建它的鸡尾酒,jQuery是基于node.js进行构建测试压缩打包,大名鼎鼎的EXT团队拥有node.js最出名的WEB框架express.js,mongodb的接口是javascript式,提供node.js的连接库……node.js是时代的骄子,从来没有这么多人为一种语言摇旗呐喊,即使它的真相曾是被人骂得最多的语言,但我们知道,最该骂的是javascript之父,只花十天时间来构思它,还有导致第一次浏览器大战的网景与微软,让JS长期滞后不前,兼容性问题成为当时程序员的噩梦!

但美好的事物终会回归,就像大陆与台湾。大陆是PHP,台湾为nodejs。让专业的人做专业的事,这是市场的需求,生产力的呼唤!基于node.js的web框架必然比PHP框架更把了解HTML,CSS与JS。前端的人才储备必然流向node.js。requirejs让JS开始走向工业化的模块化开发,国内的seajs也在做相同的事情,模块化是构建大应用的关键,标识着JSer完成有能力开发像struct这样巨弩级的web框架!前端模板的兴起,nodejs各种数据库连接库,session模拟的实现,再加之knockout这样的MVVM模式被认同普及,web框架的难题一一被打破。而我的新框架newland.js只是时代洪流的一员。

诚然,newland.js现在是非常非常弱小的,正如我在它的readme中写的一样,它只是我到达后端大陆时被撞碎的海盗船的残骸!后端的世界是如此广阔古老神秘,以致于前端的世界好像一个伊比利亚半岛。但后端的世界绝对不是美洲新大陆,更精确的比喻是百年后,人类冒冒失失跑进拥有神级技术的外星人的领地。后端的世界沉睡着像JAVA三大框架的古老帝国,活跃数千PHP的新兴国家与rails这样的圣剑骑士团!海岸上还遍布着其他登陆者,他们建立起geddyjs, railsjs, towerjs, meteorjs,express.js等居民点!这就是WEB世界的现状!PHP国家每年都跑到前端大陆劫掠数以万计的码农为它们做苦力,而只有jQuery,EXT等团队能与它们对等谈判!不过他们有点像非洲的酉长,把培训好的jQueryer奴隶卖给PHPer去了!jQuery号称是能最快制造这样的优质奴隶!EXT心有不甘,因此有了express.js,梦想有一天光靠自己就能把控一个项目!而newlandjs就是mass Framework的express.js。



mass Framework由于长期的宣传不足,及国人普遍不懂开源的好处,因此发展缓慢。但即便这样,它也国内少数能与jquery抗衡的框架,它的架构与实现都是相当优异了,汇集了我各个群的精英的设计成果。我不希望newlandjs走mass Framework的老路,总是处于缺员怠工状态,于是抓紧发动群里的人加入进来。当然,我也希望园子里的人,或来自其他圈子的朋友加入进来。中国是不缺开源项目,只是缺乏活跃的开源项目罢了。善于内斗分散了我们的战斗力,导致我们被老外全部打败,至今还在用老外的东西干活……



newlandjs有着宏伟的目标——开拓javascript新天地,实现真正的大前端!之所以这么说,是因为托HTML5与node.js所赐,websocket将成为未来前后端交互的主要渠道,一改HTTP无状态的困境。加之HTML5的改地址不刷新页面的History 新API(见github上的pjax项目与新浪微博的运用),MVVM带来的最小化刷新技术,HTML5的cache manifes, Local Storage……这一切令人惊异的技术都迫需一个跨前后端的框架来统合!knockoutjs可以完全不脚踢开jQuery,轻易处理各种DOM操作,而且写出的代码被jQuery更易维护!这正是前端MVC(或其变种)兴起的原因。但knockoutjs还是有弱点的,它最初要绑定数据的需要是怎么生成的呢?还不是要依赖后端通过几个子模板拼装起来的吗?这些子模板的拼装方式与渲染输出能不能再改进一点,像facebook的bigpipe一样智能呢?!还有模块与模板的前后端共用。less在前后端实现CSS的DRY,解放CSSer的生产力!就算我不做newland.js,外国还会有人做这事的。这是未来的趋势。



总之,让专业的人做专业的事!这是newlandjs带给大家的良好景望!

newland.js在github的地址
newland.js的静态网站

 

分享到:
评论
1 楼 yuruei2000 2012-08-13  
写的很详细, 支持一下

相关推荐

    My4150NewLand.zip

    基于4150的新大陆(Newland)排风扇与人体感应设备初级安卓demo,希望给各位使用新大陆(感知层基础套件)的小伙伴一些帮助。该demo是初级版本,一定比不上那些大牛的代码,会有一些错误,希望各位小伙伴多多指正!

    libuart.so(包名com.newland.jni)

    用c写的一个串口工具类方法有: int openUart(int comId, int mode); void closePort(int uartId); int setUart(int uartId, int b); 等方法,详细见博文《Android端控制LED屏》

    新大陆Newland USB datapipe.rar_Newland_新大陆_驱动

    新大陆Newland USB datapipe驱动是针对新大陆公司生产的一款特定硬件设备——USB数据管道的驱动程序。新大陆是一家专注于自动识别技术的中国知名企业,其产品涵盖了条码扫描器、二维码读取设备等多个领域。这款驱动...

    NewLand_AirConditionerController_1.0.0.4.apk

    NewLand_AirConditionerController_1.0.0.4.apk

    Newland POS Debug(v1.16).zip

    《Newland POS Debug(v1.16):TCP Socket通讯测试工具详解》 在IT行业中,Socket编程是一种基础且至关重要的技术,它为应用程序提供了网络通信的能力。Newland POS Debug(v1.16)是一个专为调试TCP Socket客户端和...

    newland:node.js 全栈式MVC framework

    newland 如果说前端是维斯特洛大陆,那么后端是更为古老先进的瓦雷利亚大陆! 注:上面的地名出自《冰与火之歌》 前端的世界基本定形了,谁也消灭不了谁 在jquery崛起之后,有许多框架消亡了,如MochiKit。上代王者...

    DWR联动刷select

    <script type='text/javascript' src='/Study_DWR_Select/dwr/interface/FlushSelect.js'> <script type='text/javascript' src='/Study_DWR_Select/dwr/engine.js'> <script type='text/javascript' src='/Study...

    新大陆Newland USB datapipe驱动

    新大陆扫描设备通过USB端口与PC连接时,可以有多种通讯设置: 1、USB HID-KBW USB数据线连接状况下,可以将扫描设备设置成USB HID-KBW输入模式,在这种模式下,扫描器将成为一个虚拟键盘,数据接收主机像接收真实...

    PT80-NEAT开发指南v1.1

    NEAT 开 发 指南 文档 适用于 PT80 系列 移动数据终端 版本记录 版本号 版本描述 发布日期 V 1.0 初始版本。 2012-04-12 V1.1 修改前三章内容 2012-09-25 目录 第一章 关于本手册.....................................

    Python库 | jupyterlab_git_newland-0.0.1-py3-none-any.whl

    资源分类:Python库 所属语言:Python 资源全名:jupyterlab_git_newland-0.0.1-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    newland for you

    标题 "newland for you" 暗示我们可能在讨论一个新开发的软件或系统,可能是为用户提供新的体验或服务。描述中的 "共享的小文件内测版本" 提示这是一个正在测试阶段的产品,专注于轻量级文件处理,面向的用户群体...

    串口编程命令手册.pdf

    newland

    新大陆nls hr32扫描枪驱动 v2.2.3 官方最新版

    新大陆hr32扫描枪是由新大陆官方推出的一款驱动程序,适合购买了高信号扫描枪的用户进行使用,用户安装好扫描请驱动程序以后,就可以非常便捷的进行日常的扫描工作了,欢迎有需要的朋友下载使用!...

    my-portfolio:一个演示我的能力并且还展示一些关于我的应用程序

    目录[关于](艾米·纽兰德作品集)艾米·纽兰(Amy Newland)投资组合我的个人投资组合。 使用带有Postgresql数据库的Rails后端。 使用React.js前端创建。 这是我从最后一个项目要求。 后端存储库可位于。先决条件...

    串口虚拟驱动用于HID开发

    串口虚拟驱动是一种在计算机操作系统中模拟物理串行端口的技术,它允许软件开发者通过创建一个虚拟设备来实现与硬件设备通信,而无需实际的物理串口。在HID(Human Interface Device,人机交互设备)开发中,串口...

    新大陆wifi连接云平台培训.pdf

    新大陆公司在无线技术领域不断创新,推出了通过Wi-Fi模块连接云平台的解决方案,这为物联网(IoT)设备的远程监控和控制提供了一条便捷的路径。以下是基于给定文件信息总结的知识点。 ### Wi-Fi接入云平台总体概述 ...

    使用Android Studio测试PDA扫码功能案例源码

    本案例主要介绍如何在Android Studio环境下为Newland NLS-N7这样的手持安卓扫码枪开发一个测试应用,实现自动定位焦点到输入框并填充扫描结果的功能。下面我们将详细探讨涉及的关键知识点。 1. **广播接收器...

    mesdk3.6.1输出-20180122_新大陆mesdk_

    新大陆 mesdk 开发人员使用说明文档,编写本文档,主要针对以下几个方面: 1、更好的理解新大陆移动支付相关产品(多媒体智能终端)的定位 2、如何如何快速编写一个连接过程,快速的搭建一个基本的 sdk 使用框架 3、...

    frescare K21系列USB cdc(虚拟串口)主从机驱动

    飞思卡尔的K21 系列芯片的资料相对比较少,关于USB方面的内容更少,而作为主机的更是少之又少,本驱动本人把USB从官方的USB协议栈中层层剥离出来,创建一个简单的工程,工程除了串口,其他内容都为USB协议,因此相当...

Global site tag (gtag.js) - Google Analytics