3

中国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两层

photo

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,但对于后台仍然是一个请求,减少请求数的翻倍
  • 案例:淘宝首页、详情页、单页面应用
  • 接口的模块化和标准化
  • 组件化:功能逻辑的整合和多态,一处写好各平台通用
  • 框架化:整体规范化和职责分离的未来

photo

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的修改最小化

photo

1000 then.js宣传演讲

对项目 teambition/then.js 的宣传。

photo

0920 签到中

第1日的会议即将开幕!以下是 @integ 与参会者和与博文视点的作者们合影

photo

photo


沙渺
21.8k 声望1.1k 粉丝

1998年入行,普通的电脑老玩家。Web、嵌入式Linux和电子产品设计研究者。