【问题标题】:JS Project file placementJS项目文件放置
【发布时间】:2019-08-20 03:21:31
【问题描述】:

我很难弄清楚在我的 javascript 项目中放置某个文件的位置。

我有一个相当大的 JSON 对象,它代表 ISO 语言代码:

{"code":"nl","name":"Dutch","nativeName":"Nederlands, Vlaams"},
{"code":"en","name":"English","nativeName":"English"},
{"code":"eo","name":"Esperanto","nativeName":"Esperanto"},
{"code":"et","name":"Estonian","nativeName":"eesti, eesti keel"},
{"code":"ee","name":"Ewe","nativeName":"Eʋegbe"},

我不想从 API 检索此信息,因为此信息相当静态且不会经常更改。

我只是在需要引用它的 JS 文件中“导入”这个 ISO 语言代码对象文件。

但是,我不知道该文件的实际放置位置。

我当前的项目文件结构:

root/
    package.json
    webpack.config.js
    node_modules/
    dist/
    src/
        index.html
        js/
            models/
            views/
            config.js
            index.js -- (single application controller)
            iso-language-codes.js

如您所见,“iso-language-codes.js”与应用程序控制器“index.js”位于同一级别。

我知道这很弱,但我应该把它放在哪里?大多数情况下,这种事情是偏好,但逻辑告诉我应该创建一个新的“数据”文件夹并将“iso-language-codes.js”放在新目录中,如下所示:

src/
    index.html
    js/
        models/
        views/
        config.js
        index.js -- (single application controller)
        data/
            iso-language-codes.js

非常感谢任何建议。

花了很多时间谷歌搜索和搜索堆栈,但找不到任何东西来回答我的具体问题。如果有人有什么我可以参考的,那就太好了。

【问题讨论】:

    标签: javascript file-structure


    【解决方案1】:

    你的思维过程很好。将静态数据文件放在子目录中没有任何问题(语言和国家/地区的 ISO 代码是典型示例)。

    不过,大多数人不喜欢 data 这个名字。太笼统了,一切都是数据。典型的名称是 assets/resources/ 甚至是 iso-codes/,如果你想具体一点的话。它没有错,或者以上的组合。

    MVxxx 目录结构旨在将您的想法组织成模型和视图,并使维护者的工作更轻松。它不是一成不变的,每个项目都是独一无二的。

    此外,当项目获得大量流量时,人们经常将此类文件重新定位到 CDN,以缩短加载时间。那么您的 URL 将类似于 https://some-cdn.example.com/resources/iso-codes/lang.js。也就是说,您可以以一种易于分发到多个服务器甚至服务的方式来考虑目录。

    【讨论】:

    • 谢谢。我将把“iso-language-codes.js”放在一个新的“assets”目录下。与上述结构的唯一区别是,我根据您的建议将通用“数据”重命名为“资产”。再次感谢您提供有关 MVC 结构和目录结构的额外信息,这些信息有助于为高流量站点卸载到外部服务。
    • 你认为'config.js'文件在哪里合适吗?或者,它也应该放在“资产”下吗?只有 1 个配置文件,所以不需要 'config' 目录,但也许 'config.js' 应该放在新的 'assets' 目录下?
    • @ponytails_soda 如果它只是一个文件 - 当然。很常见的做法。如果你最终有多个配置(最好避免它),那么 config/ 目录开始有意义。
    • 好的,我将 'config.js' 保留在原处(与 index.js 应用程序控制器相同级别)。谢谢。
    • 很抱歉再发表评论,但我想我终于明白你在说什么了。请参阅下面的新目录结构和详细信息。
    【解决方案2】:

    “您可以以一种易于分发到多个服务器甚至服务的方式来考虑目录”:

    https://some-cdn.example.com/resources/iso-codes/lang.js

    我注意到“iso-codes”之前的 URI 段“resources”,所以我想我可以在资源下分组图像和 sass 样式以及 iso-codes。抱歉,我之前忘了提及图片和样式。

    这是旧结构:

    src/
        index.html
        images/
        sass/
        js/
            models/
            views/
            config.js
            index.js -- (single application controller)
            assets/
                iso-language-codes.js
    

    下面是新提议的结构,将 ISO 内容(不再位于“js”文件夹下)、图像和 sass 样式分组到一个通用“资源”文件夹下。

    src/
        index.html
        resources/
            iso-codes/
                lang.js
            images/
            sass/
        js/
            models/
            views/
            config.js
            index.js -- (app controller)
    

    这会正确地遵循您的格言吗? “您可以以一种易于分发到多个服务器甚至服务的方式来考虑目录”

    【讨论】:

    • 完美。这样就可以了。
    • 谢谢!实际上,'sass' 仅在 'src' 目录中命名,因为在构建过程中,当它到达 'dist' 文件夹时,'sass' 更改为常规的 'css'。再次感谢!
    猜你喜欢
    • 2019-07-24
    • 2022-01-08
    • 2012-10-21
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    • 2018-11-15
    • 2010-11-01
    相关资源
    最近更新 更多