中国JS开发者的年度盛会“JS中国开发者大会”,于2014年6月21日在杭州举办了本年度的“杭JS”会议!
我们SegmentFault的 @integ 和 @shamiao 将为在现场为您带来现场的报道,一览大牛风采,直击技术热点。
直播已经结束,感谢大家的关注和支持!
更多照片继续更新
6月22日(DAY 2)
1745 logout
1710 Web Components W3C新标准
云适配CEO 陈本峰
- The future of Web development. WebComponets.org
- 对抗当前的Web前端框架中HTML内容不分层次、无差别完全平铺,无法维护的问题
- 很多需要后端支持(包括Nodejs)的功能在Web Components中可以直接在前端完全实现
- Template:
<template>
创建模板,创建时DOM结构已经就绪但没有开始渲染、下载和JS执行。通过cloneNode把模板真正置入文档的DOM树 - Custom Element:自定义一个HTML标签,然后使用JS回调生成真正的HTML结构
- Shadow DOM:类似于chroot--挂载在某个元素下面,但不在DOM树中显示,独立于当前文档父节点,不受文档样式上级指挥下级的影响。
- HTML Imports:仅前端实现的文件导入功能。
<link rel="import" href="myslider.html"
- 附-云适配开源项目:Amaze UI
1645 Storm框架简介
Luying Li,Twitter员工
- Storm分布式、高容错实时计算系统,Backtype开发(Twitter收购)
- 开源大数据:Storm S4 Hadoop Spark Disco HPCC
- 确保数据完全处理(无丢失)、低延迟、高容错
- Storm集群:Nimbus控制节点,Zookeeper协调节点,Supervisor工作节点
- 基本数据类型=Tuple;无边界的Tuple序列=Stream;Stream的源头=Spout
- 消息处理者Bolt:输入1或多个Stream,输出0或多个Stream
- Topology拓扑架构:Spouts和Bolts组成网络;Task与流分组策略
- Word Count Example
- 多语言性:Topology和Nimubs均基于Thrift,spouts和bolts都作为子进程来运行,使用JSON通讯
- Storm在 GitHub上已经有了部分Nodejs实现
1610 Hybrid API 的传感器
@鬼道-徐凯 <<跨终端Web>>作者
- 传感器的类型:动作、环境、音频、视频
- 陀螺仪原理 加速计原理
- 陀螺仪与重力感应的误解
- GPS 磁力 光线温度气压等
- 实际设备的项目实例
1545 Edge.js
Iris Classon
- 在Node中运行.net程序
- 调用预编译的dll模块
- 反向的在.net中调用Node程序
- 跨平台--在Linux下使用Mono兼容层来应用Edge.js
1510 five-lines 深入浅出node命令行工具
Jacob Groundwater,NodeOS项目作者介绍如何使用Node写操作系统的基础套件
- 5行可以做一个Web Server(Node的Hello World)
- 那做一个命令行工具如何?(5行的CURL,把http请求内容pipe到stdout)
- 更复杂的--可不可以写一个Shell?(Shell的基本:解析输入,调用进程,显示输出结果。13行的Shell)
- 扩展为远程Shell-- groundwater/node-wssh(服务器30行,客户端40行)
- 那么可以做一个操作系统吗?
- 操作系统的要件:内核、包管理器、Shell
- 内核=linux,shell=node shell,包管理器=npm--这是一个正在进行的项目,请参阅node-os.com
1450 Nodejs与多种服务协作实践
1400 玉伯:如何持续成长
- 我们不需要时间管理--情绪管理和适量自律才是需要的
- 不要依赖工具
- input->person->output--知识管理的IPO模型
- 写博客和写博客
- 做有追求的程序员
1100 TroopJS - scalable web application
garryyao from EF Labs Shanghai
- 我们需要的可能不是一些小打小闹的功能库,而是一个完整的基础框架。
- 功能库(library):以做好一件事为卖点,而后不断的吸引你去使用他
- 框架(framework):做好一些最重要的事情,剩下的放用户自己选择
- 可扩展性不只是功能扩展,而也包含需求、函数库甚至是多设备的扩展
- 多设备的悲剧:ExtJS桌面强力,但移动端几乎无能,所以最后另出了一套Sencha Touch结果在API的兼容上又引入一堆问题
- 所以一个框架绝对不能给开发者设定太多的条条框框、一定不能越界做太多事情,必须抵制功能膨胀的诱惑
- Unlearn & Relearn:抛掉既成成熟技术的条条框框,从而形成和创造新的概念
- M、V、C、O、T......这些行为和做事方式定死的功能模块,其实都可以规约为统一的"组件"(components)。
- TroopJS组件的例子--组件通过从消息总线得到消息,从而被动的进行:开启结束生命周期、处理DOM行为、处理路由行为等各种操作
- TroopJS不提供非常多的功能,许多可选的实用特性要在TroopJS上挂载模块(modules)才能实现
1020 massive js development
EF Learning Lab 的外国演讲者(英孚教育不只是英语教学)
- 大型项目(jquery),庞大项目(Github),巨型项目=massive(gmail)
- 这时开发者分散在多个部门甚至多个公司,交流很痛苦却仍然必须
- 你所有的模块 都是属于我的--规范化是铁的原则
- 写小的模块,但不要过于碎片。写小的部件,但时刻保留扩展和连接成大系统的接口
- 小的、分布式的总是好于大的、单一模块化的。--Linux内核是个很大的特例
- 使用消息总线message bus整合多个组件之间的依赖和通讯
- 异步,除非TM有明确的目的必须同步--因为我们永远不知道网络、资源阻塞等所有的意外状况
- 事件驱动--Node、DOM其实我们已经在做了,但还需要放眼更多:Web sockets, Swing, Akka, Erlang
- 让代码自说明--减轻人类的识读负担(congnitive load)
- 声明式--描述"做什么"而不是"如何做"
- DRY原则:不要重复copy来他人代码的错误
- 准备一个root application--就像Linux的root或init,管理一切、容纳一切、负责一切、代表一切
(噗 知道这个梗的就笑吧!)
0940 开源项目管理维护经验分享
郭宇(@turingou)分享他在github上从新手到有人fork、pr的熟练开源玩家的历程。
- 如果在Github上没有方向 那就去寻找喜欢的领域
- 寻找解决问题的办法,寻找新的技术领域,不要投机
- 有了第二个人就不再是自己的代码而是开源项目
- 跨出写代码本身,注重换位思维和表达力,注意管理项目走向
- 四要素:用户(中心),代码(手段),推广,文档
- 种子用户(注:也叫核心用户 core user)很重要
0900 sofish的AngularJS演讲
@sofish 为大家分享了使用Angular开发web app的很多实用经验。例如如何让搜索引擎可以爬到web app的内容,数据双向绑定可能遇到的问题,如何解决页面闪烁等非常实用的经验技巧
6月21日(DAY 1)
晚上:After Party
After Party是杭JS主办方在下午会后特别为参会者提供的一场欢乐的自由联欢活动。
1620 BlendUI
BlendUI 一个web app开发框架。所有的元素都是webview!
1550 rabbit.js mvc框架
芋头君的小制作,轻量级mvc框架xinyu198736/Rabbit.js
- 轻量、约定严格、清晰分层、数据库统一封装
- 除mvc外,多加Filters, Service两层
rabbit.js logo特别萌。猜猜是谁画的。
1515 Patrisika
来自USTC的化学与材料科学家分享了js解释器Patrisika.语速超快的,用很文艺的ppt。还学会了各种高大上的名词:泛化,特化,因子,不平凡表达式,去正交化。
1420 p2p对等协作开发
James Halliday 美国著名nodejs极客与npm模块作者。
- cool的美式手绘风幻灯片
- 网络的协作可以做成一个大的项目
- 大的项目终究是大批小模块的互相依赖
- 分治法
- 现场演示使用trumpet库在nodejs下创建标准过滤器形式的html处理器
- 现场演示splicer管道流控制程序
- 现场演示如何使用的各种nodejs模块拼装一个web聊天程序
1400 Google Bigquery API
来自台湾nodejs社区的xxx,分享了google的big query。可惜google近期不能访问。
1330 抽奖
中午饭后的抽奖环节,一个帅到吐血的程序员把自己的奖品送给了给他发奖的妹子。
1110 淘宝前后端分离实践
- 前后端开发必须合作,但常常责任不清,必须分离
- 后端mvc时代
- 当前的前端新技术发展迅速
- 前端越来越复杂,肯定不是单纯的“套页面”,不是后端的附庸
- 前端内部,和前后端之间耦合的紧密性
- 困惑:view层谁做?
- 业务和渲染散落在应用中,所以只能用响应式硬来去做跨终端
- 前后端耦合迟早会造成代码的腐烂
- 第一次分离尝试:后端只出数据API,前端自己全包
- 问题:各层职责重叠,并自成系统
- 客户端渲染性能低下并且seo难做
- 前后端虽然看起来分离但仍然耦合,重用性差
- 到底什么是前端?什么是后端?
- 按照工作逻辑还是b/s的实体环境来区分?
- nodejs打通前后端代码的复用,穿透b/s鸿沟
- 后端=java 后台+服务器端js,前端=浏览器端js
- nodejs+bigpiper,前端仍然是分批加载的lazyload,但对于后台仍然是一个请求,减少请求数的翻倍
- 案例:淘宝首页、详情页、单页面应用
- 接口的模块化和标准化
- 组件化:功能逻辑的整合和多态,一处写好各平台通用
- 框架化:整体规范化和职责分离的未来
1050 atom shell嵌入nodejs实战
Github staff的演讲
- atom shell:用nodejs编程的chromium,同时嵌入到浏览器和渲染端
- 与node webkit相似,用nodejs请求本地系统的功能
- 但atom shell不假设用户总会使用浏览器功能,只是封装chromium的功能给node用户使用
- multi context patch 解决多context的问题
- atom shell的载入方式:先初始化chromium,再初始化多个context并载入nodejs
- nodejs和原生gui循环的区别
- 一个主线程,两个事件循环。本身不可能,但只照顾一个循环又不可行
- atom shell选择融合两种循环方法
- 新开子线程等待io事件,等待到了通知主线程
- 对chromium和nodejs的修改最小化
1000 then.js宣传演讲
对项目 teambition/then.js 的宣传。
0920 签到中
第1日的会议即将开幕!以下是 @integ 与参会者和与博文视点的作者们合影
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。