จุดประสงค์ของการใช้ CDN คือเร็วกว่าสิ่งแรกเพราะเป็นเครือข่ายแบบกระจายแต่อย่างที่สองเพราะเบราว์เซอร์แบบคงที่และแคชไฟล์คงที่สูงเช่นjquery
ห้องสมุดCDN ที่เว็บไซต์ของคุณ เบราว์เซอร์ของผู้ใช้ถูกดาวน์โหลดไปใช้แล้วไฟล์จึงถูกแคชดังนั้นจึงไม่มีการดาวน์โหลดที่ไม่จำเป็นเกิดขึ้น ที่ถูกกล่าวว่าก็ยังคงเป็นความคิดที่ดีที่จะให้ทางเลือก
ตอนนี้จุดของแพคเกจ npm bootstrap
คือมันให้บูตของจาวาสคริปต์ไฟล์เป็นโมดูล ดังที่ได้กล่าวไว้ข้างต้นสิ่งนี้ทำให้มันเป็นไปrequire
ได้โดยใช้browserifyซึ่งเป็นกรณีการใช้งานที่น่าจะเป็นไปได้มากที่สุดและอย่างที่ฉันเข้าใจเหตุผลหลักสำหรับ bootstrap ที่ถูกเผยแพร่ใน npm
วิธีใช้งาน
ลองนึกภาพโครงสร้างโครงการต่อไปนี้:
โครงการ
| - node_modules
| - สาธารณะ
| | - css
| | - img
| | - js
| | - index.html
| - package.json
ในของindex.html
คุณคุณสามารถอ้างอิงทั้งสองcss
และjs
ไฟล์เช่นนี้:
<link rel="stylesheet" href="../node_modules/bootstrap/dist/css/bootstrap.min.css">
<script src="../node_modules/bootstrap/dist/js/bootstrap.min.js"></script>
ซึ่งเป็นวิธีที่ง่ายที่สุดและถูกต้องสำหรับ.css
ไฟล์ แต่จะเป็นการดีกว่ามากหากคุณรวมbootstrap.js
ไฟล์นี้ไว้ในpublic/js/*.js
ไฟล์ของคุณ:
var bootstrap = require('bootstrap');
และคุณรวมถึงรหัสนี้เฉพาะในผู้ที่ไฟล์ที่คุณต้องการจริงjavascript
Browserifyดูแลรวมไฟล์นี้ให้คุณด้วยbootstrap.js
ตอนนี้ข้อเสียเปรียบคือว่าตอนนี้คุณมีไฟล์ front-end ของคุณเป็นnode_modules
อ้างอิงและโฟลเดอร์มักจะไม่ได้ตรวจสอบด้วยnode_modules
git
ฉันคิดว่านี่เป็นส่วนที่ถกเถียงกันมากที่สุดด้วยความคิดเห็นและการแก้ไขมากมาย
อัพเดทมีนาคม 2560
เกือบสองปีผ่านไปแล้วตั้งแต่ฉันเขียนคำตอบนี้และมีการอัปเดต
ตอนนี้วิธีที่ยอมรับกันโดยทั่วไปคือการใช้Bundlerเช่นwebpack (หรือ Bundler ของทางเลือกอื่น) ที่จะกำสินทรัพย์ทั้งหมดของคุณในการสร้างขั้นตอน
ประการแรกมันช่วยให้คุณใช้ไวยากรณ์ commonjs เช่นเดียวกับ browserify ดังนั้นเพื่อรวมรหัส bootstrap js ในโครงการของคุณคุณทำเช่นเดียวกัน:
const bootstrap = require('bootstrap');
ในส่วนของcss
ไฟล์นั้น webpack เรียกว่า " loader " พวกเขาอนุญาตให้คุณเขียนสิ่งนี้ในรหัส js ของคุณ:
require('bootstrap/dist/css/bootstrap.css');
และไฟล์ css จะถูกรวมไว้ในบิลด์ของคุณ พวกเขาจะถูกเพิ่มแบบไดนามิกเป็น<style />
แท็กเมื่อแอปของคุณทำงาน แต่คุณสามารถกำหนดค่า webpack เพื่อส่งออกเป็นcss
ไฟล์แยกต่างหาก คุณสามารถอ่านเพิ่มเติมเกี่ยวกับสิ่งนั้นได้ในเอกสารประกอบของ webpack
สรุปแล้ว.
- คุณควร "มัด" รหัสแอปของคุณด้วยบันเดิล
- คุณไม่ควรกระทำทั้ง
node_modules
ไฟล์ที่สร้างขึ้นแบบไดนามิกเพื่อคอมไพล์ คุณสามารถเพิ่มbuild
สคริปต์ลงใน npm ซึ่งควรใช้เพื่อปรับใช้ไฟล์บนเซิร์ฟเวอร์ อย่างไรก็ตามสิ่งนี้สามารถทำได้หลายวิธีขึ้นอยู่กับกระบวนการสร้างที่คุณต้องการ