最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

如何使用背包管理静态资产

IT培训 admin 4浏览 0评论

如何使用背包管理静态资产

我使用backpack与express server.I发现一些后端代码有fs.readFile(路径),这些文件位于src / assets / *中,不包括构建路径。例如我使用sequelize并需要读取一些文件。

fs
  .readdirSync(__dirname)
  .filter(file => {
    return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js');
  })
  .forEach(file => {
    var model = sequelize['import'](path.join(__dirname, file));
    db[model.name] = model;
  });

我想知道如何管理这些文件,因为它们会丢失文件丢失的错误。我接下来有一些想法

  1. 使用FileLoader或URL-Loader或其他配置集webpack
  2. 事先在构建目录中找到资产。
  3. 用户导入jsfiles而不是fs.readFile
  4. 停止使用背包。

我需要动态读取js文件,因此第一个解决方案需要一些刺激性的扩展修改。其次我们可能不再需要背包,所以我们有更好的选择第4。第三个是合理的,但有些代码需要重写,如果有很多文件,那么检查它们并不容易。

你有更好的解决方案吗?

回答如下:

我解决了使用require.context在编译过程中处理动态需求模块的问题。

 var context   = require.context(__dirname ,false,/\.\/(?!index).*\.js$/)  
 context.keys().forEach(
  (file) => {
    if (!sequelize.importCache[file]) {
      let modelDefine = context(file)
      if (typeof modelDefine === 'object') {
        // ES6 module compatibility
        modelDefine = modelDefine.default
      }
      var model = modelDefine(sequelize, Sequelize.DataTypes)
      sequelize.importCache[file] = model
      db[model.name] = model
    }
  }
)

这不需要定位资产,因为这些模块捆绑了构建的文件。

见enter link description here

如何使用背包管理静态资产

我使用backpack与express server.I发现一些后端代码有fs.readFile(路径),这些文件位于src / assets / *中,不包括构建路径。例如我使用sequelize并需要读取一些文件。

fs
  .readdirSync(__dirname)
  .filter(file => {
    return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js');
  })
  .forEach(file => {
    var model = sequelize['import'](path.join(__dirname, file));
    db[model.name] = model;
  });

我想知道如何管理这些文件,因为它们会丢失文件丢失的错误。我接下来有一些想法

  1. 使用FileLoader或URL-Loader或其他配置集webpack
  2. 事先在构建目录中找到资产。
  3. 用户导入jsfiles而不是fs.readFile
  4. 停止使用背包。

我需要动态读取js文件,因此第一个解决方案需要一些刺激性的扩展修改。其次我们可能不再需要背包,所以我们有更好的选择第4。第三个是合理的,但有些代码需要重写,如果有很多文件,那么检查它们并不容易。

你有更好的解决方案吗?

回答如下:

我解决了使用require.context在编译过程中处理动态需求模块的问题。

 var context   = require.context(__dirname ,false,/\.\/(?!index).*\.js$/)  
 context.keys().forEach(
  (file) => {
    if (!sequelize.importCache[file]) {
      let modelDefine = context(file)
      if (typeof modelDefine === 'object') {
        // ES6 module compatibility
        modelDefine = modelDefine.default
      }
      var model = modelDefine(sequelize, Sequelize.DataTypes)
      sequelize.importCache[file] = model
      db[model.name] = model
    }
  }
)

这不需要定位资产,因为这些模块捆绑了构建的文件。

见enter link description here

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论