imweb / issue-Ideas

Ideas
2 stars 0 forks source link

技术规划 #3

Closed miniflycn closed 9 years ago

miniflycn commented 10 years ago

技术规划

dwarf项目

专为客户端开发的小矮人加载器。

Why

  • 许多客户端(如:QQ、微信)有基于webkit内核的内嵌浏览器
  • 手机端流量非常重要,需要极小的模块管理库
  • 新的静态文件与数据并行加载模型,具体参照:https://github.com/miniflycn/parallel-require/blob/master/Readme.md , 未来parallel会合入dwarf项目
  • 提供内置indexedDB,localStorage本地存储以满足各式业务需求
  • 提供内置CDN失败回源
  • 支持依赖检验,可将依赖树完全加载完毕后再回调

    Present

  • PC群公告(成功在没有使用本地化时,将render时间降到1s以内)
  • 手Q群公告
  • 找课程(基于本地服务器的动态构建,与基于gulp的打包,后面会提到)

    compass-node

基于libsass与语法分析的Compass子集实现。

Why

  • https://github.com/sass/libsass/issues/82 很多人想要。。。。。
  • 因为compass的性能无法支持我的本地动态编译任务

    How

  • libsass不支持Custom Functions,许多功能不是仅仅使用sass内置语言就能解决,需要想办法在Javascript解析Sass并执行。
  • 单纯用Javscript写一个Sass语法分析器,那我用libsass干啥……
  • 我们分了三步进行:
    1. 用sass内置语言解决了一些compass才有的函数
    2. 想办法找到所有函数,并丢到函数分析器里解析
    3. 在函数分析器进行语法分析,将并将函数替换成最后结果

      Present

  • 基本完成基础功能
  • 需要细致的解决函数语法分析以及sass内函数声明并自动导入Javascript中

    组建管理更新机制

利用 bower 或者 duo 对我们的组件进行管理更新。 利用单元测试保证组件向后兼容。

Why

  • 我们的组件修复bug之后经常引起新的bug
  • 项目初始化成本过高
  • 组件更新后无法在多个项目中同步,因为我的组件都是代码复制

    inhale项目

基于类似gulp的流式动态构建本地服务器,可服用gulp插件,导致构建与开发可以服用大部分代码

Why

  • Fiddler太慢
  • 在多个项目切换和初始化的成本很高
  • 为什么我们不在src进行开发调试,而一定要在dev
  • 更好的客户端打印机制
  • 基于构建的更好的编程体验

    Present

找课程使用了这套方案

  • 模块编写的时候以NodeJS模块编写,打包或者动态编译的时候编程通常模块,例如,源代码为:
function init() {
    console.log('hello');
}

module.exports = init;

打包后:

define('./main', function (require, module, exports) {
    function init() {
        console.log('hello');
    }

    module.exports = init;
});