คำถามติดแท็ก commonjs

5
ความสัมพันธ์ระหว่าง CommonJS, AMD และ RequireJS?
ฉันยังคงสับสนเกี่ยวกับCommonJS, AMDและRequireJSมากแม้หลังจากอ่านมาก ฉันรู้ว่าCommonJS (เดิมชื่อServerJS ) เป็นกลุ่มสำหรับการกำหนดข้อกำหนดJavaScript (เช่นโมดูล) เมื่อมีการใช้ภาษานอกเบราว์เซอร์ ข้อกำหนดคุณสมบัติโมดูลCommonJSมีการนำไปใช้บางอย่างเช่นNode.jsหรือRingoJSใช่ไหม ความสัมพันธ์ระหว่างCommonJS , Asynchronous Module Definition (AMD) และRequireJSคืออะไร? RequireJSคือการนำไปใช้ของนิยามโมดูลCommonJSหรือไม่? ถ้าใช่เอเอ็มดีคืออะไร


5
ความแตกต่างระหว่าง“ module.exports” และ“ exports” ในระบบโมดูล CommonJs
ในหน้านี้ ( http://docs.nodejitsu.com/articles/getting-started/what-is-require ) มันระบุว่า "ถ้าคุณต้องการตั้งค่าเอ็กซ์ปอร์ตออบเจ็กต์เป็นฟังก์ชันหรือวัตถุใหม่คุณต้อง ใช้วัตถุ module.exports " คำถามของฉันคือทำไม // right module.exports = function () { console.log("hello world") } // wrong exports = function () { console.log("hello world") } ฉัน console.logged ผล ( result=require(example.js)) และคนแรกคือคนที่สองคือ[Function]{} คุณช่วยอธิบายเหตุผลเบื้องหลังได้ไหม ผมอ่านโพสต์ที่นี่: module.exports เทียบกับการส่งออกใน Node.js มันมีประโยชน์ แต่ไม่ได้อธิบายถึงสาเหตุที่มันถูกออกแบบในลักษณะนั้น จะมีปัญหาหรือไม่หากมีการส่งคืนการอ้างอิงการส่งออกโดยตรง?

4
Babel 6 เปลี่ยนวิธีการส่งออกเริ่มต้น
module.exports = exports["default"]ก่อนที่บาเบลจะเพิ่มบรรทัด มันไม่ทำเช่นนี้อีกต่อไป สิ่งนี้หมายความว่าอย่างไรก่อนที่ฉันจะทำ: var foo = require('./foo'); // use foo ตอนนี้ฉันต้องทำสิ่งนี้: var foo = require('./foo').default; // use foo ไม่ใช่เรื่องใหญ่โต (และฉันเดาว่านี่คือสิ่งที่ควรจะเป็นมาตลอด) ปัญหาคือฉันมีรหัสจำนวนมากซึ่งขึ้นอยู่กับวิธีการใช้งาน (ฉันสามารถแปลงส่วนใหญ่เป็นการนำเข้า ES6 แต่ไม่ใช่ทั้งหมด) ทุกคนสามารถให้คำแนะนำเกี่ยวกับวิธีการทำงานแบบเก่าโดยไม่ต้องผ่านโครงการของฉันและแก้ไขปัญหานี้ (หรือแม้แต่คำแนะนำในการเขียน codemod เพื่อทำสิ่งนี้จะค่อนข้างลื่น) ขอบคุณ! ตัวอย่าง: การป้อนข้อมูล: const foo = {} export default foo ผลลัพธ์ด้วย Babel 5 "use strict"; Object.defineProperty(exports, "__esModule", { value: true …

20
วิธีตรวจสอบว่าสคริปต์ทำงานภายใต้ Node.js หรือไม่
ฉันมีสคริปต์ที่ฉันต้องการจากสคริปต์ Node.js ซึ่งฉันต้องการให้เอ็นจิ้น JavaScript อิสระ ตัวอย่างเช่นฉันต้องการทำexports.x = y;เฉพาะเมื่อมันทำงานภายใต้ Node.js ฉันจะทำการทดสอบนี้ได้อย่างไร คุณลักษณะเมื่อโพสต์คำถามนี้ผมไม่ทราบ Node.js โมดูลจะขึ้นอยู่กับCommonJS สำหรับตัวอย่างเฉพาะที่ฉันให้มาคำถามที่แม่นยำกว่านี้ก็คือ: สคริปต์จะทราบได้อย่างไรว่าจำเป็นต้องใช้เป็นโมดูล CommonJS หรือไม่

14
ฟิลด์ "เบราว์เซอร์" ไม่มีการกำหนดค่านามแฝงที่ถูกต้อง
ฉันเริ่มใช้ webpack2 (เพื่อให้แม่นยำv2.3.2) และหลังจากสร้างการกำหนดค่าของฉันใหม่ฉันยังคงพบปัญหาที่ดูเหมือนจะแก้ไม่ได้ (ขออภัยล่วงหน้าสำหรับการถ่ายโอนข้อมูลที่น่าเกลียด): ERROR in ./src/main.js Module not found: Error: Can't resolve 'components/DoISuportIt' in '[absolute path to my repo]/src' resolve 'components/DoISuportIt' in '[absolute path to my repo]/src' Parsed request is a module using description file: [absolute path to my repo]/package.json (relative path: ./src) Field 'browser' doesn't contain a …

5
Node.js - ใช้ module.exports เป็นตัวสร้าง
ตามคู่มือ Node.js: หากคุณต้องการให้รูทของการเอ็กซ์พอร์ตโมดูลของคุณเป็นฟังก์ชัน (เช่นคอนสตรัคเตอร์) หรือหากคุณต้องการเอ็กซ์พอร์ตอ็อบเจ็กต์ที่สมบูรณ์ในการกำหนดหนึ่งครั้งแทนที่จะสร้างคุณสมบัติทีละรายการให้กำหนดให้กับ module.exports แทนการเอ็กซ์พอร์ต . ตัวอย่างที่ให้คือ: // file: square.js module.exports = function(width) { return { area: function() { return width * width; } }; } และใช้เช่นนี้: var square = require('./square.js'); var mySquare = square(2); console.log('The area of my square is ' + mySquare.area()); คำถามของฉัน: ทำไมตัวอย่างไม่ใช้สี่เหลี่ยมเป็นวัตถุ? ต่อไปนี้ถูกต้องหรือไม่และทำให้ตัวอย่างเป็น "เชิงวัตถุ" …

7
โหลด Javascript Libraries“ Vanilla” ลงใน Node.js
มีไลบรารี Javascript ของบุคคลที่สามที่มีฟังก์ชันบางอย่างที่ฉันต้องการใช้ในเซิร์ฟเวอร์ Node.js (โดยเฉพาะฉันต้องการใช้ไลบรารี QuadTree javascript ที่ฉันพบ) แต่ไลบรารีเหล่านี้เป็นเพียง.jsไฟล์ที่ตรงไปตรงมาไม่ใช่ "ไลบรารี Node.js" ด้วยเหตุนี้ไลบรารีเหล่านี้จึงไม่เป็นไปตามexports.var_nameไวยากรณ์ที่ Node.js คาดหวังสำหรับโมดูล เท่าที่ฉันเข้าใจนั่นหมายถึงเมื่อคุณทำmodule = require('module_name');หรือmodule = require('./path/to/file.js');คุณจะจบลงด้วยโมดูลที่ไม่มีฟังก์ชันที่เข้าถึงได้โดยสาธารณะเป็นต้น คำถามของฉันคือ "ฉันจะโหลดไฟล์ javascript โดยพลการไปยัง Node.js ได้อย่างไรเพื่อที่ฉันจะสามารถใช้ฟังก์ชันการทำงานของมันได้โดยไม่ต้องเขียนใหม่เพื่อให้มันทำexports" ฉันยังใหม่กับ Node.js มากดังนั้นโปรดแจ้งให้เราทราบหากมีช่องโหว่ในความเข้าใจเกี่ยวกับวิธีการทำงานของฉัน แก้ไข : การวิจัยลงในสิ่งที่มากขึ้นและตอนนี้ผมเห็นว่ารูปแบบการโหลดโมดูลที่ใช้ Node.js เป็นจริงส่วนหนึ่งของมาตรฐานการพัฒนาเมื่อเร็ว ๆ นี้สำหรับการโหลดห้องสมุด Javascript เรียกCommonJS มันบอกสิ่งนี้บนหน้าโมดูล doc สำหรับ Node.jsแต่ตอนนี้ฉันพลาดไปแล้ว มันอาจจะจบลงด้วยการที่คำตอบสำหรับคำถามของฉันคือ "รอจนกว่าผู้เขียนของห้องสมุดของคุณจะเขียนอินเทอร์เฟซ CommonJS หรือทำด้วยตัวคุณเอง"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.