Bootstrap & Webpack
មគ្គុទ្ទេសក៍ផ្លូវការសម្រាប់របៀបបញ្ចូល និងបាច់ CSS និង JavaScript របស់ Bootstrap នៅក្នុងគម្រោងរបស់អ្នកដោយប្រើ Webpack ។
រៀបចំ
យើងកំពុងបង្កើតគម្រោង Webpack ដោយប្រើ Bootstrap ពីដំបូង ដូច្នេះមានតម្រូវការជាមុន និងជំហានខាងមុខមួយចំនួន មុនពេលដែលយើងអាចចាប់ផ្តើមបាន។ ការណែនាំនេះតម្រូវឱ្យអ្នកដំឡើង Node.js និងស្គាល់ពីស្ថានីយ។
-
បង្កើតថតគម្រោង និងដំឡើង npm ។ យើងនឹងបង្កើត
my-project
ថតឯកសារ ហើយចាប់ផ្តើម npm ជាមួយនឹង-y
អាគុយម៉ង់ ដើម្បីចៀសវាងការសួរសំណួរអន្តរកម្មទាំងអស់។mkdir my-project && cd my-project npm init -y
-
ដំឡើង Webpack ។ បន្ទាប់មកយើងត្រូវដំឡើងភាពអាស្រ័យនៃការអភិវឌ្ឍន៍ Webpack របស់យើង៖
webpack
សម្រាប់ស្នូលនៃ Webpackwebpack-cli
ដូច្នេះយើងអាចដំណើរការពាក្យបញ្ជា Webpack ពីស្ថានីយ ហើយwebpack-dev-server
ដូច្នេះយើងអាចដំណើរការម៉ាស៊ីនមេអភិវឌ្ឍន៍មូលដ្ឋានបាន។ យើងប្រើ--save-dev
ដើម្បីផ្តល់សញ្ញាថាភាពអាស្រ័យទាំងនេះគឺសម្រាប់តែការប្រើប្រាស់ក្នុងការអភិវឌ្ឍន៍ប៉ុណ្ណោះ មិនមែនសម្រាប់ផលិតទេ។npm i --save-dev webpack webpack-cli webpack-dev-server
-
ដំឡើង Bootstrap ។ ឥឡូវនេះយើងអាចដំឡើង Bootstrap បាន។ យើងក៏នឹងដំឡើង Popper ផងដែរ ចាប់តាំងពីការទម្លាក់ចុះ ការលេចឡើង និងព័ត៌មានជំនួយរបស់យើងអាស្រ័យលើវាសម្រាប់ទីតាំងរបស់ពួកគេ។ ប្រសិនបើអ្នកមិនមានគម្រោងប្រើសមាសធាតុទាំងនោះទេ អ្នកអាចលុបចោល Popper នៅទីនេះ។
npm i --save bootstrap @popperjs/core
-
ដំឡើងភាពអាស្រ័យបន្ថែម។ បន្ថែមពីលើ Webpack និង Bootstrap យើងត្រូវការភាពអាស្រ័យមួយចំនួនបន្ថែមទៀតដើម្បីនាំចូល និងចងភ្ជាប់ CSS និង JS របស់ Bootstrap ឱ្យបានត្រឹមត្រូវជាមួយ Webpack ។ ទាំងនេះរួមមាន Sass ឧបករណ៍ផ្ទុកមួយចំនួន និង Autoprefixer ។
npm i --save-dev autoprefixer css-loader postcss-loader sass sass-loader style-loader
ឥឡូវនេះយើងបានដំឡើងភាពអាស្រ័យចាំបាច់ទាំងអស់ យើងអាចធ្វើការបង្កើតឯកសារគម្រោង និងនាំចូល Bootstrap ។
រចនាសម្ព័ន្ធគម្រោង
យើងបានបង្កើត my-project
Folder និងចាប់ផ្តើម npm រួចហើយ។ ឥឡូវនេះ យើងក៏នឹងបង្កើត src
និង dist
ថតឯកសាររបស់យើងផងដែរ ដើម្បីបង្រួបបង្រួមរចនាសម្ព័ន្ធគម្រោង។ ដំណើរការដូចខាងក្រោមពី my-project
ឬបង្កើតថតឯកសារ និងរចនាសម្ព័ន្ធឯកសារដែលបង្ហាញខាងក្រោមដោយដៃ។
mkdir {dist,src,src/js,src/scss}
touch dist/index.html src/js/main.js src/scss/styles.scss webpack.config.js
នៅពេលអ្នករួចរាល់ គម្រោងពេញលេញរបស់អ្នកគួរតែមើលទៅដូចនេះ៖
my-project/
├── dist/
│ └── index.html
├── src/
│ ├── js/
│ │ └── main.js
│ └── scss/
│ └── styles.scss
├── package-lock.json
├── package.json
└── webpack.config.js
នៅពេលនេះ អ្វីគ្រប់យ៉ាងគឺស្ថិតនៅក្នុងកន្លែងដែលត្រឹមត្រូវ ប៉ុន្តែ Webpack នឹងមិនដំណើរការទេ ព្រោះយើងមិនទាន់បានបំពេញនៅក្នុងរបស់យើង webpack.config.js
នៅឡើយ។
កំណត់រចនាសម្ព័ន្ធ Webpack
ជាមួយនឹងការដំឡើងភាពអាស្រ័យ និងថតគម្រោងរបស់យើងរួចរាល់សម្រាប់យើងក្នុងការចាប់ផ្តើមសរសេរកូដ ឥឡូវនេះយើងអាចកំណត់រចនាសម្ព័ន្ធ Webpack និងដំណើរការគម្រោងរបស់យើងនៅក្នុងមូលដ្ឋាន។
-
បើក
webpack.config.js
នៅក្នុងកម្មវិធីនិពន្ធរបស់អ្នក។ ដោយសារវាទទេ យើងនឹងត្រូវបន្ថែមការកំណត់រចនាសម្ព័ន្ធ boilerplate មួយចំនួនទៅវា ដូច្នេះយើងអាចចាប់ផ្តើមម៉ាស៊ីនមេរបស់យើង។ ផ្នែកនៃការកំណត់នេះប្រាប់ Webpack ឱ្យរកមើល JavaScript របស់គម្រោងរបស់យើង កន្លែងដែលត្រូវបញ្ចេញកូដដែលបានចងក្រងទៅជា (dist
) និងរបៀបដែលម៉ាស៊ីនមេអភិវឌ្ឍន៍គួរមានឥរិយាបទ (ទាញចេញពីdist
ថតដោយផ្ទុកឡើងក្តៅ)។const path = require('path') module.exports = { entry: './src/js/main.js', output: { filename: 'main.js', path: path.resolve(__dirname, 'dist') }, devServer: { static: path.resolve(__dirname, 'dist'), port: 8080, hot: true } }
-
បន្ទាប់យើងបំពេញរបស់យើង
dist/index.html
។ នេះគឺជាទំព័រ HTML ដែល Webpack នឹងផ្ទុកនៅក្នុងកម្មវិធីរុករក ដើម្បីប្រើប្រាស់ CSS និង JS ដែលបានភ្ជាប់មកជាមួយ យើងនឹងបន្ថែមទៅវានៅជំហានបន្ទាប់។ មុនពេលយើងអាចធ្វើវាបាន យើងត្រូវផ្តល់ឱ្យវានូវអ្វីមួយដើម្បីបង្ហាញ និងរួមបញ្ចូលoutput
JS ពីជំហានមុន។<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Bootstrap w/ Webpack</title> </head> <body> <div class="container py-4 px-3 mx-auto"> <h1>Hello, Bootstrap and Webpack!</h1> <button class="btn btn-primary">Primary button</button> </div> <script src="./main.js"></script> </body> </html>
យើងកំពុងរួមបញ្ចូលរចនាប័ទ្ម Bootstrap បន្តិចនៅទីនេះជាមួយ
div class="container"
ហើយ<button>
ដើម្បីឱ្យយើងឃើញនៅពេលដែល CSS របស់ Bootstrap ត្រូវបានផ្ទុកដោយ Webpack ។ -
ឥឡូវនេះយើងត្រូវការអក្សរ npm ដើម្បីដំណើរការ Webpack ។ បើក
package.json
និងបន្ថែមstart
ស្គ្រីបដែលបង្ហាញខាងក្រោម (អ្នកគួរតែមានស្គ្រីបសាកល្បងរួចហើយ)។ យើងនឹងប្រើស្គ្រីបនេះ ដើម្បីចាប់ផ្តើមម៉ាស៊ីនមេ Webpack dev ក្នុងតំបន់របស់យើង។{ // ... "scripts": { "start": "webpack serve --mode development", "test": "echo \"Error: no test specified\" && exit 1" }, // ... }
-
ហើយចុងក្រោយ យើងអាចចាប់ផ្តើម Webpack បាន។ ពី
my-project
ថតនៅក្នុងស្ថានីយរបស់អ្នក សូមដំណើរការអក្សរ npm ដែលបានបន្ថែមថ្មីនោះ៖npm start
នៅក្នុងផ្នែកបន្ទាប់ និងចុងក្រោយនៃការណែនាំនេះ យើងនឹងដំឡើងកម្មវិធីផ្ទុក Webpack ហើយនាំចូល CSS និង JavaScript ទាំងអស់របស់ Bootstrap។
នាំចូល Bootstrap
ការនាំចូល Bootstrap ទៅក្នុង Webpack តម្រូវឱ្យអ្នកផ្ទុកដែលយើងបានដំឡើងនៅក្នុងផ្នែកដំបូង។ យើងបានដំឡើងពួកវាជាមួយ npm ប៉ុន្តែឥឡូវនេះ Webpack ចាំបាច់ត្រូវកំណត់រចនាសម្ព័ន្ធដើម្បីប្រើវា។
-
ដំឡើងឧបករណ៍ផ្ទុកនៅក្នុង
webpack.config.js
. ឯកសារកំណត់រចនាសម្ព័ន្ធរបស់អ្នកឥឡូវនេះបានបញ្ចប់ហើយ ហើយគួរតែត្រូវគ្នានឹងផ្នែកខាងក្រោម។ ផ្នែកថ្មីតែមួយគត់នៅទីនេះគឺmodule
ផ្នែក។const path = require('path') module.exports = { entry: './src/js/main.js', output: { filename: 'main.js', path: path.resolve(__dirname, 'dist') }, devServer: { static: path.resolve(__dirname, 'dist'), port: 8080, hot: true }, module: { rules: [ { test: /\.(scss)$/, use: [ { loader: 'style-loader' }, { loader: 'css-loader' }, { loader: 'postcss-loader', options: { postcssOptions: { plugins: () => [ require('autoprefixer') ] } } }, { loader: 'sass-loader' } ] } ] } }
នេះជាការសង្ខេបអំពីមូលហេតុដែលយើងត្រូវការឧបករណ៍ផ្ទុកទាំងនេះ។
style-loader
បញ្ចូល CSS ទៅក្នុង<style>
ធាតុមួយនៅក្នុង<head>
ទំព័រ HTMLcss-loader
ជួយក្នុងការប្រើប្រាស់ និង@import
តម្រូវ ឱ្យប្រើ Autoprefixer និង អនុញ្ញាតឱ្យយើងប្រើ Sass ។url()
postcss-loader
sass-loader
-
ឥឡូវនេះ ចូរយើងនាំចូល CSS របស់ Bootstrap ។ បន្ថែមខាងក្រោមដើម្បី
src/scss/styles.scss
នាំចូល Sass ប្រភពរបស់ Bootstrap ទាំងអស់។// Import all of Bootstrap's CSS @import "~bootstrap/scss/bootstrap";
អ្នកក៏អាចនាំចូលសន្លឹករចនាប័ទ្មរបស់យើងជាលក្ខណៈបុគ្គលប្រសិនបើអ្នកចង់បាន។ សូមអានឯកសារនាំចូល Sass របស់យើង សម្រាប់ព័ត៌មានលម្អិត។
-
បន្ទាប់យើងផ្ទុក CSS ហើយនាំចូល JavaScript របស់ Bootstrap ។ បន្ថែមខាងក្រោមដើម្បី
src/js/main.js
ផ្ទុក CSS និងនាំចូល JS ទាំងអស់របស់ Bootstrap ។ Popper នឹងត្រូវបាននាំចូលដោយស្វ័យប្រវត្តិតាមរយៈ Bootstrap ។// Import our custom CSS import '../scss/styles.scss' // Import all of Bootstrap's JS import * as bootstrap from 'bootstrap'
អ្នកក៏អាចនាំចូលកម្មវិធីជំនួយ JavaScript ជាលក្ខណៈបុគ្គលតាមតម្រូវការ ដើម្បីរក្សាទំហំកញ្ចប់ចុះក្រោម៖
import Alert from 'bootstrap/js/dist/alert' // or, specify which plugins you need: import { Tooltip, Toast, Popover } from 'bootstrap'
សូមអានឯកសារ JavaScript របស់យើង សម្រាប់ព័ត៌មានបន្ថែមអំពីរបៀបប្រើកម្មវិធីជំនួយរបស់ Bootstrap ។
-
ហើយអ្នករួចរាល់ហើយ! 🎉 ជាមួយនឹងប្រភពរបស់ Bootstrap Sass និង JS ត្រូវបានផ្ទុកយ៉ាងពេញលេញ នោះម៉ាស៊ីនមេអភិវឌ្ឍន៍មូលដ្ឋានរបស់អ្នកឥឡូវនេះគួរតែមើលទៅដូចនេះ។
ឥឡូវនេះអ្នកអាចចាប់ផ្តើមបន្ថែមសមាសធាតុ Bootstrap ណាមួយដែលអ្នកចង់ប្រើ។ ត្រូវប្រាកដថា ពិនិត្យមើលគម្រោងឧទាហរណ៍ Webpack ពេញលេញ សម្រាប់របៀបបញ្ចូល Sass ផ្ទាល់ខ្លួនបន្ថែម និងបង្កើនប្រសិទ្ធភាពការស្ថាបនារបស់អ្នកដោយនាំចូលតែផ្នែកនៃ CSS និង JS របស់ Bootstrap ដែលអ្នកត្រូវការ។
ការបង្កើនប្រសិទ្ធភាពផលិតកម្ម
អាស្រ័យលើការរៀបចំរបស់អ្នក អ្នកប្រហែលជាចង់អនុវត្តការបង្កើនប្រសិទ្ធភាពសុវត្ថិភាព និងល្បឿនបន្ថែមមួយចំនួនដែលមានប្រយោជន៍សម្រាប់ដំណើរការគម្រោងនៅក្នុងផលិតកម្ម។ ចំណាំថាការបង្កើនប្រសិទ្ធភាពទាំងនេះមិនត្រូវបានអនុវត្តនៅលើ គម្រោងឧទាហរណ៍របស់ Webpack ហើយអាស្រ័យលើអ្នកក្នុងការអនុវត្ត។
ការដកស្រង់ CSS
យើងបានកំណត់ រចនាសម្ព័ន្ធ ខាងលើយ៉ាងងាយស្រួលបញ្ចេញ CSS ទៅក្នុងបណ្តុំ ដូច្នេះ មិនចាំបាច់ style-loader
ផ្ទុកឯកសារ CSS ដោយដៃ ទេ។ dist/index.html
វិធីសាស្រ្តនេះប្រហែលជាមិនដំណើរការជាមួយនឹងគោលការណ៍សុវត្ថិភាពខ្លឹមសារដ៏តឹងរឹងនោះទេ ហើយវាអាចនឹងក្លាយទៅជាឧបសគ្គនៅក្នុងកម្មវិធីរបស់អ្នក ដោយសារទំហំកញ្ចប់ធំ។
ដើម្បីបំបែក CSS ដូច្នេះយើងអាចផ្ទុកវាដោយផ្ទាល់ពី dist/index.html
ប្រើ mini-css-extract-loader
កម្មវិធីជំនួយ Webpack ។
ដំបូងដំឡើងកម្មវិធីជំនួយ៖
npm install --save-dev mini-css-extract-plugin
បន្ទាប់មកធ្វើភ្លាមៗ ហើយប្រើកម្មវិធីជំនួយក្នុងការកំណត់រចនាសម្ព័ន្ធ Webpack៖
--- a/webpack/webpack.config.js
+++ b/webpack/webpack.config.js
@@ -1,8 +1,10 @@
+const miniCssExtractPlugin = require('mini-css-extract-plugin')
const path = require('path')
module.exports = {
mode: 'development',
entry: './src/js/main.js',
+ plugins: [new miniCssExtractPlugin()],
output: {
filename: "main.js",
path: path.resolve(__dirname, "dist"),
@@ -18,8 +20,8 @@ module.exports = {
test: /\.(scss)$/,
use: [
{
- // Adds CSS to the DOM by injecting a `<style>` tag
- loader: 'style-loader'
+ // Extracts CSS for each JS file that includes CSS
+ loader: miniCssExtractPlugin.loader
},
{
បន្ទាប់ពីដំណើរការ npm run build
ម្តងទៀត នឹងមានឯកសារថ្មីមួយ dist/main.css
ដែលនឹងមាន CSS ទាំងអស់ដែលបាននាំចូលដោយ src/js/main.js
. ប្រសិនបើអ្នកមើល dist/index.html
ក្នុងកម្មវិធីរុករកតាមអ៊ីនធឺណិតរបស់អ្នកឥឡូវនេះ រចនាប័ទ្មនឹងបាត់ទៅវិញ ដូចដែលវាស្ថិតនៅក្នុង dist/main.css
. អ្នកអាចបញ្ចូល CSS ដែលបានបង្កើត dist/index.html
ដូចនេះ៖
--- a/webpack/dist/index.html
+++ b/webpack/dist/index.html
@@ -3,6 +3,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="stylesheet" href="./main.css">
<title>Bootstrap w/ Webpack</title>
</head>
<body>
ការស្រង់ចេញឯកសារ SVG
CSS របស់ Bootstrap រួមបញ្ចូលឯកសារយោងជាច្រើនចំពោះឯកសារ SVG តាមរយៈ data:
URIs ខាងក្នុង។ ប្រសិនបើអ្នកកំណត់គោលការណ៍សុវត្ថិភាពខ្លឹមសារសម្រាប់គម្រោងរបស់អ្នកដែលរារាំង data:
URI សម្រាប់រូបភាព នោះឯកសារ SVG ទាំងនេះនឹងមិនផ្ទុកទេ។ អ្នកអាចដោះស្រាយបញ្ហានេះបានដោយការស្រង់ចេញឯកសារ SVG ខាងក្នុងដោយប្រើមុខងារម៉ូឌុលទ្រព្យសកម្មរបស់ Webpack ។
កំណត់រចនាសម្ព័ន្ធ Webpack ដើម្បីទាញយកឯកសារ SVG ក្នុងជួរដូចនេះ៖
--- a/webpack/webpack.config.js
+++ b/webpack/webpack.config.js
@@ -16,6 +16,14 @@ module.exports = {
},
module: {
rules: [
+ {
+ mimetype: 'image/svg+xml',
+ scheme: 'data',
+ type: 'asset/resource',
+ generator: {
+ filename: 'icons/[hash].svg'
+ }
+ },
{
test: /\.(scss)$/,
use: [
បន្ទាប់ពីដំណើរការ npm run build
ម្តងទៀត អ្នកនឹងឃើញឯកសារ SVG ដែលបានស្រង់ចេញ dist/icons
និងយោងយ៉ាងត្រឹមត្រូវពី CSS ។
ឃើញអ្វីខុស ឬហួសសម័យនៅទីនេះ? សូម បើកបញ្ហានៅលើ GitHub ។ ត្រូវការជំនួយក្នុងការដោះស្រាយបញ្ហា? ស្វែងរក ឬចាប់ផ្តើមការពិភាក្សា នៅលើ GitHub ។