《编写可维护的JavaScript》读书笔记之自动化-文件和目录

2019-01-11  本文已影响9人  游学者灬墨槿

文件和目录结构

在开始构建你的系统之前首先要确定如何组织你的文件和目录。而文件和目录的结构取决于项目类型。

最佳实践

抛开项目类型不说,总有一些适合于 JavaScript 文件和目录结构公用的最佳实践。

一个文件只包含一个对象

相关文件用目录分组

保持第三方代码的独立

确定创建位置

  1. 创建后的 JavaScript 文件应该放置在一个完全独立的目录里,而且不应该提交到项目工程中。
  2. 网站应当是可配置的,使用编译后的目录而非源码目录。
  3. 不要把编译后的内容提交到源码工程里,这一点非常重要。因为编译后的内容都是成型的“工件”,在最终被部署上线之前,可能会被很多人多次编译创建。部署过程应当通过编译产生可最终发布的成品,是可以直接部署上线的。

保持测试代码的完整性

【说明】:如果你当前工作的 JavaScript 文件是一个大型网站或者 Web 应用的一部分而不是一个独立的 JavaScript 项目,文件和目录的结构会有些许不同。整个目录结构基本上由服务端使用的框架所决定。即使整个项目结构随着项目的不同千变万化,但始终会有一个单独的目录专门用来放置前端代码。

基本结构

JavaScript 目录下边放置如下三个主要目录是当下一种很流行的做法。

【说明】:开发环境和构建过程很大程度上决定着你会选择什么形式的结构。好的结构可以缩短构建的时间并且不会让开发人员在新建文件的时候纠结于放在哪里。

案例展示

csslint
    .git
    build
    demos
    lib
    npm
    release
    src
        cli
        core
        formatters
        rules
        worker
    tests
        core
        css
        formatters
        rules

【说明】:build 目录从不提价,release 目录始终包含最新的稳定发行版本。src 目录下有一些按功能划分的子目录。tests 目录的结构同 src 目录的结构一一对应,所以 src/core/CSSLint.js 的测试代码即为 test/core/CSSLint.js。

jquery
    build
    speed
    src
        ajax
        sizzle
        ajax.js
        attributes.js
        callbacks.js
        core.js
        css.js
        data.js
        deferred.js
        dimensions.js
        effects.js
        event.js
        exports.js
        intro.js
        manipulation.js
        offset.js
        outro.js
        queue.js
        sizzle-jquery.js
        support.js
        tracersing.js
    test
        data
        qunit
        unit
            ajax.js
            attributes.js
            callbacks.js
            core.js
            css.js
            data.js
            deferred.js
            dimensions.js
            effects.js
            event.js
            exports.js
            manipulation.js
            offset.js
            queue.js
            selector.js
            support.js
            tracersing.js

【说明】:jQuery 也采用了这种结构形式。唯一不同的就是 jQuery 把所有的源文件都直接放在了 src 目录下,而没有每个都建立子目录。子目录保留用来存放核心特性的资源文件和扩展。test 目录存放着跟源文件名字相同的测试代码。比如 src/ajax.js 的测试代码即为 test/ajax.js。

dojo
    _base
    _firebug
    cldr
    data
    date
    dnd
    fx
    io
    nls
    resources
    rpc
    selector
    store
    tests
        _base
        cache
        data
        date
        dnd
        html
        io
        nls
        resources
        store
        uacss
        window
    aspect.js
    back.js
    ...
    cache.js
    dojo.js
    date.js

【说明】:Dojo 采用了同 jQuery 类似的结构心事。其中一个很大的不同是 Dojo 根目录下没有 src。而是顶层目录直接包含了所有的源文件和用来放置核心特性资源文件和扩展的子目录。tests 目录跟顶级目录的结构一一对应,所以 tests/date.js 即 date.js 的测试代码。

yui3
    build
    sandbox
    src
        anim
        app
        arraysort
            js
                arraysort.js
            meta
            tests
                arraysort.html
            build.properties
            build.xml
            HISTORY.md
            README.md
        async-queue

【说明】:修改了原有的结构,src 目录下的每个子目录都代表一个单独的 YUI 模块,而且每个模块都至少有以下 4 个子目录。

【注意】:YUI 中的测试文件可能是 HTML 文件或者 JavaScript 文件,因此准确地说 tests 目录中包含的内容因模块而异。一般而言,至少有一个文件的名称同源文件一致。所以 tests/arraysort.html 或者 tests/arraysort.js 就是 js/arraysort.js 的测试代码。

上一篇下一篇

猜你喜欢

热点阅读