【发布时间】:2017-07-26 02:46:50
【问题描述】:
我目前正在深入研究 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 -
@CerlinBoss Perfect,这是否意味着我的“可能”解决方案比第一个更好?
-
我能看到的唯一区别是一个纤细的
mix文件。 -
@CerlinBoss 好的,我的意思是,第二个解决方案会起作用吗?您会建议这样做吗?我正在尝试了解使用 Laravel Mix 的最佳实践。我在网上搜索过,虽然我完全了解 Laravel Mix 是什么,但我想了解如何最好地使用它......
-
第二种解决方案将起作用。使用
require是nodejs 的模块加载方式。webpack可以为require方法添加一个 poly-fill 或将app.js中的代码附加到所有单独的.js文件中(我不确定 webpack 实际使用哪种方法。)将第二个解决方案称为better one是完全取决于每个人的个人喜好。
标签: node.js laravel gulp laravel-elixir laravel-mix