【发布时间】:2018-08-22 04:54:54
【问题描述】:
我有一些用 PHP 编写的项目,现在我想使用 webpack、npm 等来管理前端资源。
到目前为止,我将 JS/CSS 文件的源代码复制粘贴到公共目录中,然后将它们简单地包含在页面中。
我有文件,例如:client.js,其中包含:
$(function () {
$(document).scroll(function () {
if ($(window).scrollTop() > ($(window).height() / 3)) {
$(".return-to-top").fadeIn(200);
} else {
$(".return-to-top").fadeOut(200);
}
});
$('.return-to-top').click(function () {
$('body,html').animate({
scrollTop: 0
}, 500);
return false;
});
$('pre code').each(function (i, block) {
if (!$(block).attr("class")) {
$(block).addClass('text');
}
hljs.highlightBlock(block);
});
});
如你所见,在这个 sn-p 中我使用了 jQuery、hljs 插件(我有更多的那种文件,里面有不同的插件)。
尝试配置npm package.json:
{
"dependencies": {
"highlight.js": "^9.12.0",
"jquery": "^3.3.1"
},
"devDependencies": {
"clean-webpack-plugin": "^0.1.19",
"webpack": "^4.1.1",
"webpack-cli": "^2.0.11"
},
"scripts": {
"build": "webpack"
},
"private": true
}
还有webpack.conf.js:
const path = require('path');
const CleanWebpackPlugin = require('clean-webpack-plugin');
const webpack = require("webpack");
module.exports = {
entry: {
app: './resources/app.js'
},
output: {
filename: '[name].bundle.js',
path: path.resolve(__dirname, 'public/dist')
},
plugins: [
new CleanWebpackPlugin(['public/dist']),
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery"
})
]
};
./resources/app.js
import $ from "jquery";
import returnToTop from "./return-to-top";
import highlight from "./highlight";
window.jQuery = $;
window.$ = $;
$(function () {
returnToTop($);
highlight($);
});
在return-to-top.js 和highlight.js 文件中,我有来自client.js 的代码片段。
highlight.js:
import hljs from "highlight.js";
export default function highlight() {
$('pre code').each(function (i, block) {
if (!$(block).attr("class")) {
$(block).addClass('text');
}
hljs.highlightBlock(block);
});
};
return-to-top.js:
export default function returnToTop() {
$(document).scroll(function () {
if ($(window).scrollTop() > ($(window).height() / 3)) {
$(".return-to-top").fadeIn(200);
} else {
$(".return-to-top").fadeOut(200);
}
});
$('.return-to-top').click(function () {
$('body,html').animate({
scrollTop: 0
}, 500);
return false;
});
};
一些问题:
- 这是一个好方法吗?
- 我可以做得更好吗?尤其是点击/滚动等处理程序。
- 如何有效地包含 CSS?
- “城里新人”的一些好的做法?
我想准备我的代码以使用 Vuejs。
【问题讨论】:
-
我认为您需要将其分解为不同的问题,尽可能具体。
-
@jmb.mage 在这篇文章中只有关于 CSS 的问题不在上下文中,其余问题是相关的。
-
让文件 return-to-top.js 和 highlight.js 有意义吗?您可以将函数放在一个文件中并导出。
标签: javascript jquery npm webpack