- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
目前 webpack 处理文件,它通过加载器解析文件以确定依赖关系。
使用 babel 时,babel 解析一个文件,并有足够的信息直接告诉 webpack 它有哪些依赖项。据我所知,没有办法将这些丰富的信息直接传递给 webpack,babel 必须生成一个 JavaScript 文件作为文本,然后 webpack 将重新解析该文件以提取依赖信息。
(a) 我的总结正确吗?这是目前发生的情况吗?
(b) 是否有任何计划允许这样的层之间更紧密地集成?我希望这会对构建时间产生相当大的影响。
最佳答案
(a) 是的,这个总结是正确的。这主要是因为不同工具之间没有通用的 AST 格式。最近,ESTree Spec 改变了这种情况。 .但是,我不知道这些 AST 在实际项目中的互操作性如何。比较 astexplorer.net 上的 AST ,看起来 AST 有点相似。 Webpack 目前的设计很浪费,但提供了良好的互操作性。
(b) 我不知道有任何计划。但我也已经考虑过了。 JS 不是唯一被多次解析的语言:在大多数 webpack 构建链中,Sass 被解析并转换为 CSS,CSS 由 postcss-loader 解析,通常应用自动前缀并输出 CSS,然后 CSS 被再次解析css-loader(有趣的是 PostCSS 又一次)并被转换为 JS,由 webpack 再次解析以找出依赖关系图。这是非常低效的(和 can already be a problem ),但是这样您就可以集成任何能够理解源代码的工具。
但是,有一种趋势是使编译器更具可插拔性。最突出的例子是Babel和 PostCSS .因此,autoprefixer-loader已弃用,取而代之的是 PostCSS 插件。甚至官方委员会成员也致力于 API 来拦截浏览器内部的语言处理,例如 CSS-TAG Houdini Task Force。或 JavaScript decorators proposal .
我期待更多像 Babel 和 PostCSS 这样的工具出现。这可能会减少 webpack 构建链中单独的加载器完成的工作,而在这些工具环境中完成更多工作——这实际上是一件好事,因为这些工具可以在 webpack 上下文之外重用。看到更多的编译器提供跳过代码生成并立即重用 AST 的方法真是太好了。
关于 webpack 的现状:
还有一个鲜为人知的加载器功能,称为 value
/ inputValue
.它旨在作为一种将元信息从一个加载器传递到另一个加载器的方式。因此它可以用作a shortcut to skip needless parsing .您可以将此功能与 webpack@1 一起使用。但是,这个功能目前在 webpack@2 的 beta 分支上是不可用的(不知道为什么)。
— sokra 告诉我,他已经在 webpack@2 中删除了这个遗留功能,所以不再安全使用
加载器可能有多个输入和输出。由于 JavaScript 不允许多个 return
值,输出只能通过调用 this.callback
来实现.当前的约定是第一个值始终是实际的加载器内容。第二个值是源映射(如果激活)。所以我们可以使用第三个值作为传递 AST 的一种方式。然而,这目前还没有实现。但我们可以从它开始。
顺便说一句:Mark Finger最近对这个主题做了一些有值(value)的研究。您可能对 his findings 感兴趣也是。
关于webpack - webpack 会采用 AST 作为模块输入吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36329964/
考虑以下代码: template struct list { template list(Args...) { static_assert(sizeof..
考虑以下代码: template struct list { template list(Args...) { static_assert(sizeof..
最近才开始学习"new"OpenGL(可编程而不是固定功能,我从 Nehe 教程中学到的),我想知道自从 OpenGL 4 发布以来学习 OpenGL 3 是否真的有用。 我问的原因是因为我想知道能够
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我想了解如何操作特征向量/矩阵。我想实现最小二乘高斯牛顿算法(因此我学习使用 Eigen 库)。我有一个 1x6 的参数 vector ,每次迭代都需要更新它们。现在,我只想弄清楚函数如何将 vect
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 5 年前。 Improv
我发现编写适用于Enums的静态方法非常困难。这是一个非常人为的示例,但假设您想要编写一个方法,该方法采用 Enum 常量并返回下一个声明的常量。我发现(大约一个小时后)你可以按如下方式进行。它可以工
我正在尝试编写一个函数,在某些条件下,将指向结构的指针更改为指向不同的结构。 我的限制是我想保留初始函数签名,该签名将指向指针(而不是特定结构类型)的通用指针作为参数。 这行不通: [nav] In
我正在尝试将 Keras 示例改编为 VAE https://blog.keras.io/building-autoencoders-in-keras.html 我修改了代码,使用有噪声的 mnist
自 JPA 2.0 以来,关系上有 orphanRemoval 属性,它极大地简化了父子关系的更新,并且与级联删除一起允许删除树的整个分支并轻松删除它。 但是,也有一些情况可能被标记为“收养”,即您将
我正在尝试编写一个类,它能够在以后及时调用不带参数的 lambda。我期待 C++17 类模板参数推导以避免需要工厂函数。但是,尝试在不指定类型的情况下实例化对象会失败。我可以很好地使用工厂功能,但我
我怎样才能避免并非所有控制路径都在此处返回容器的事实: enum Type {Int, String}; Container containerFactory(Type
我开始学习 C++ 和 STL。 我有一个问题: 写一个函数模板palindrome,接受一个 vector 参数并返回true或false来检查 vector 是否是回文(12321是回文,1234
我一直在尝试获取一个条目值(代码中的 S1)以将其自身设置为一个值(_attributes 字典中的 STR),但我就是无法让它工作。我想让它成为一个最终的顶层循环,但我在这方面一步一步来,因为我是一
我想做同样的事情 How do I get the number of days between two dates in JavaScript? 但我想对此日期格式执行相同操作:2000-12-31
我想编写一个带有构造函数的 C++ 类,该构造函数将 auto_ptr 作为其参数,以便我可以将类实例从 auto_ptr 初始化为另一个实例: #include class A { public:
我需要一种方法,我可以在其中获取二维数组中的输入并以最快的方式之一对其进行逐行排序。我尝试使用 Insertion Sort 同时获取 Input 和 Sort it。我使用的第二件事是我单独为一行取
好的,我已经阅读了一些关于 IDisposable 最佳实践的文章,我想我基本上明白了(终于)。 我的问题与从 IDisposable 基类继承有关。我看到的所有示例都在子类中一遍又一遍地编写相同的代
定义类时,以下是否有效? T(const T&&) = default; 我正在阅读移动构造函数 here并且它解释了如何仍然可以隐式声明默认值: A class can have multiple
我想使用 LoadLibrary 开发一个插件系统。 我的问题是:我希望我的函数采用 const char* 而 LoadLibrary 采用 LPCTSTR。 我有一个聪明的想法来做(LPCSTR)
我是一名优秀的程序员,十分优秀!