我目前正在深入学习Laravel Mix,到目前为止,虽然我完全理解Laravel Mix是什么以及它的工作原理,但我正在尝试更多地了解常见做法和“如何”...
例如,考虑以下文件结构:
/resources/assets/js/app.js (all global functions)
/resources/assets/js/index/index.js (functions specific to index.js)
/resources/assets/js/about/about.js (functions specific to about.js)
/resources/assets/js/contact/contact.js (functions specific to contact.js)
现在,理想情况下,我希望以下内容以以下方式合并和压缩:
/public/js/index/index-some_hash.js (including app.js)
/public/js/about/about-some_hash.js (including app.js)
/public/js/contact/contact-some_hash.js (including app.js)
据我所知,实现这一目标的方法大概是这样的:
// Index
mix.js([
'resources/assets/js/app.js',
'resources/assets/js/index/index.js'
], 'public/js/index/index.js').version();
// About
mix.js([
'resources/assets/js/app.js',
'resources/assets/js/about/about.js'
], 'public/js/about/about.js').version();
// Contact
mix.js([
'resources/assets/js/app.js',
'resources/assets/js/contact/contact.js'
], 'public/js/contact/contact.js').version();
我的问题
简单地说,我想知道上面的方法是否是我尝试做到的正确方法?是否有更好的方法或更常见的方法来实现这个目标呢?
如果上述结构是错误的,并且有其他方式可以组合我的文件,请分享您的知识。然而,除非有非常好的理由,否则我希望避免以下情况:
- 为每个页面提供两个单独的文件,即app.min.js和index.min.js。 这需要每页两次查找,理想情况下应该尽可能少
- 向网站上的所有页面提供相同的文件。向不需要使用它的页面提供代码是一种资源浪费,无论如何都要缓存...
一个想法...
我注意到在JS文件中有一行代码:require('./bootstrap');
。请原谅我落伍了,但我从未在JavaScript中看到过这样的写法(我假设它来自node.js)。话虽如此,显然它只是将bootstrap.js
文件作为依赖项加载到特定文件中。因此,考虑到这一点,以下解决方案是否更好:
about.js
require('./app'); // Include global functions
// Do some magic here specifically for the 'about' page...
webpack.mix.js:
mix.js(['resources/assets/js/*/*.js'); // For all pages
如果这是一个更好的解决方案,那么如何使用SASS包含文件?上述方法是否有改进的空间?
如果这是一个更好的解决方案,那么如何使用SASS包含文件?上述方法是否有改进的空间?
import
语句,它的行为类似于JavaScript中的require
。 - Cerlinmix
文件。 - Cerlinrequire
是 Node.js 模块加载的方式。webpack
可能会为require
方法添加一个 poly-fill,或将代码附加到所有单独的.js
文件中(我不确定 webpack 实际使用哪种方法)。将第二个解决方案称为“更好”的方案完全取决于每个人的个人偏好,这是主观的。 - Cerlin