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

JavaScript (เพื่อไม่ให้สับสนกับ Java) เป็นภาษาระดับสูง, ไดนามิก, หลายกระบวนทัศน์, ภาษาที่พิมพ์น้อยที่ใช้สำหรับทั้งฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์สคริปต์ ใช้แท็กนี้สำหรับคำถามเกี่ยวกับการใช้งานทั่วไปของ ECMAScript, JavaScript, JScript ฯลฯ โดยทั่วไปแล้ว JS ไม่ได้อ้างถึง ECMA-cousin, ActionScript

2
คุณจะทดสอบจาวาสคริปต์ของคุณอย่างไร
ฉันใช้เวลาทำงานเป็นจำนวนมากในสายจาวาสคริปต์ ฉันไม่พบวิธีที่ใช้งานได้ดีกับการทดสอบจาวาสคริปต์ ในอดีตนี้ไม่เคยมีปัญหาสำหรับฉันเนื่องจากเว็บไซต์ส่วนใหญ่ที่ฉันทำงานด้วยมีจาวาสคริปต์น้อยมาก ตอนนี้ฉันมีเว็บไซต์ใหม่ที่ใช้งาน jQuery ได้อย่างครอบคลุมฉันต้องการสร้างการทดสอบหน่วยสำหรับระบบส่วนใหญ่ ปัญหาของฉันคือสิ่งนี้ ฟังก์ชั่นส่วนใหญ่ทำการเปลี่ยนแปลง DOM ในทางใดทางหนึ่ง ฟังก์ชั่นส่วนใหญ่ร้องขอข้อมูลจากเว็บเซิร์ฟเวอร์เช่นกันและต้องการเซสชันในบริการเพื่อรับผลลัพธ์กลับมา ฉันต้องการเรียกใช้การทดสอบจากทั้งบรรทัดคำสั่งหรือการทดสอบการใช้บังเหียนแทนในเบราว์เซอร์ ความช่วยเหลือหรือบทความใด ๆ ที่ฉันควรอ่านจะเป็นประโยชน์

2
วิธีที่แนะนำสำหรับฟังก์ชั่นตัวช่วยใน JavaScript คืออะไร?
วิธีที่แนะนำสำหรับฟังก์ชั่นผู้ช่วยคืออะไร? ฉันต้องการเลือกหนึ่งเทคนิคและดำเนินการเพื่อสร้าง "คลาส" ใหม่ของฉัน นี่คือตัวเลือกการออกแบบที่ฉันได้ครุ่นคิด: ตัวเลือกที่ 1: ฟังก์ชันผู้ช่วยในขอบเขตด้านนอกเรียกใช้ด้วยบริบทของอินสแตนซ์ function createPane (pane) { // logic to create pane var proto = Object.create(this.paneList); $.extend(paneProto, pane); return paneProto; } Panes.prototype.initialize = function (panes) { var _this = this; _.each(panes, function () { _this.panes.push(createPane.call(_this, this)); }); } จุดเด่น:ไวยากรณ์ง่าย ๆ createPaneไม่ได้เผยแพร่ในอินสแตนซ์ ข้อด้อย: createPaneสามารถเข้าถึงได้ในขอบเขตอื่น ตัวเลือก 2: …

1
Node.js หรือ servlets [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันเคยได้ยินมากและอ่านเกี่ยวกับภาษาด้านเซิร์ฟเวอร์ Javascript เช่น Node.js และเห็นการเปรียบเทียบจำนวนมากในความโปรดปรานของโหนด ฉันไม่เข้าใจสิ่งที่ทำให้ดีขึ้นหรือเร็วขึ้นหรือเกี่ยวข้องกับบางสิ่งบางอย่างที่โตเต็มที่เหมือน Java Servlets แต่ Servlets ถูกสร้างขึ้นบนภาษาการเขียนโปรแกรมแบบมัลติเธรดซึ่งตรงข้ามกับ Node.js ถ้าอย่างนั้น node.js จะเร็วขึ้นได้อย่างไร? ถ้าสมมติว่าผู้ใช้ 1000K สอบถามสำหรับบันทึกฐานข้อมูล Node.js ไม่ควรช้ากว่า Servlets ยังไม่ servlets มีความปลอดภัยที่ดีขึ้นเมื่อเทียบกับ Node.js?

3
มีการพัฒนา Javascript เกินกว่าที่ได้รับการออกแบบมาให้ทำตั้งแต่แรก
ฉันได้พูดคุยกับเพื่อนเกี่ยวกับวัตถุประสงค์ของ Javascript เมื่อใดและอย่างไรควรใช้อย่างไร ฯลฯ เขาอ้างว่า: JavaScript ได้รับการออกแบบมาเพื่อเพิ่มการโต้ตอบกับหน้า HTML [ ... ] JavaScript ให้เครื่องมือการเขียนโปรแกรม HTML สำหรับนักออกแบบ HTML โดยปกติผู้เขียน HTML ไม่ใช่โปรแกรมเมอร์ แต่ JavaScript เป็นภาษาสคริปต์ที่มีไวยากรณ์ง่ายมาก! เกือบทุกคนสามารถวาง "ตัวอย่าง" ของรหัสขนาดเล็กลงในหน้า HTML ของพวกเขา JavaScript สามารถตอบสนองต่อเหตุการณ์ JavaScript สามารถตั้งค่าให้ทำงานเมื่อมีบางสิ่งเกิดขึ้นเช่นเมื่อเพจโหลดเสร็จหรือเมื่อผู้ใช้คลิกที่องค์ประกอบ HTML JavaScript สามารถอ่านและเขียนองค์ประกอบ HTML ได้ JavaScript สามารถอ่านและเปลี่ยนแปลงเนื้อหาขององค์ประกอบ HTML สามารถใช้ JavaScript เพื่อตรวจสอบข้อมูล จาวาสคริปต์สามารถใช้ในการตรวจสอบข้อมูลในแบบฟอร์มก่อนที่จะถูกส่งไปยังเซิร์ฟเวอร์ สิ่งนี้ช่วยประหยัดเซิร์ฟเวอร์จากการประมวลผลพิเศษ JavaScript สามารถใช้เพื่อตรวจจับเบราว์เซอร์ของผู้เยี่ยมชม - JavaScript สามารถใช้ตรวจจับเบราว์เซอร์ของผู้เยี่ยมชมและ - …
10 javascript 

5
PHP, HTML, Javascript และการเขียนแนวปฏิบัติที่ดี
ฉันรู้ว่าฉันต้องเขียนข้อกำหนดการประชุมเกี่ยวกับการเข้ารหัส HTML, JavaScript และ PHP สำหรับฉันและทีมของฉัน ในการพัฒนาเว็บไซต์เช่นเดียวกับใน C ++ ฉันเป็นแฟนของการเยื้องและความคิดเห็น อย่างไรก็ตามในการทำงานของฉันฉันพบรหัส HTML + JavaScript + PHP ซึ่งทำให้ปวดหัว ฉันกำลังพยายามทำให้โค้ดอ่าน แต่สิ่งที่ดูเหมือนจะดีกว่าสำหรับฉัน (เพื่อเยื้อง & ความคิดเห็น) ดูเหมือนจะไม่ทำให้เพื่อนร่วมทีมหลงเสน่ห์ดังนั้นฉันจึงสงสัยว่ามีวิธีปฏิบัติที่ดีที่ดีที่สุด "เอกสารเหมือนกับหน้าเว็บของทุกวันนี้ซึ่งวันต่อวันมีความซับซ้อนมากขึ้นเรื่อย ๆ ฉันตระหนักถึงความจริงที่ว่าเป็นไปได้ว่ารหัสของหน้าเว็บทุกวันนี้มีความซับซ้อนเล็กน้อย แต่ฉันสงสัยว่าการประชุมที่ดีเกี่ยวกับแง่มุมเหล่านี้มีอยู่แล้วหรือไม่

2
ฉันจะใช้จาวาสคริปต์ได้อย่างไร
ฉันเชื่อว่าฉันได้เรียนรู้แนวคิดพื้นฐานบางส่วน / มากที่สุด / ส่วนใหญ่ที่เกี่ยวกับการเขียนโปรแกรมการทำงานใน JavaScript อย่างไรก็ตามฉันมีปัญหาในการอ่านรหัสฟังก์ชั่นโดยเฉพาะแม้แต่รหัสที่ฉันเขียนและสงสัยว่าใครสามารถให้คำแนะนำเคล็ดลับแนวปฏิบัติที่ดีที่สุดคำศัพท์และอื่น ๆ ที่สามารถช่วยฉันได้ ใช้รหัสด้านล่าง ฉันเขียนรหัสนี้ โดยมีจุดมุ่งหมายที่จะกำหนดความคล้ายคลึงกันร้อยละระหว่างวัตถุสองระหว่างการพูดและ{a:1, b:2, c:3, d:3} {a:1, b:1, e:2, f:2, g:3, h:5}ผมผลิตรหัสในการตอบสนองต่อคำถามนี้ในกองมากเกิน เพราะฉันไม่แน่ใจเหมือนกันว่าเปอร์เซ็นต์ที่คล้ายคลึงกันที่โปสเตอร์ถามเกี่ยวกับอะไรฉันจึงให้สี่ชนิดที่แตกต่างกัน: เปอร์เซ็นต์ของกุญแจในวัตถุที่ 1 ที่สามารถพบได้ในที่ 2 ร้อยละของค่าในวัตถุที่ 1 ที่สามารถพบได้ใน 2 รวมถึงการทำซ้ำ เปอร์เซ็นต์ของค่าในวัตถุที่ 1 ที่สามารถพบได้ในที่ 2 โดยไม่อนุญาตให้ทำซ้ำและ เปอร์เซ็นต์ของคู่ {key: value} ในวัตถุที่ 1 ที่สามารถพบได้ในวัตถุที่สอง ฉันเริ่มด้วยรหัสที่จำเป็นพอสมควร แต่รู้ได้อย่างรวดเร็วว่านี่เป็นปัญหาที่เหมาะสมสำหรับการเขียนโปรแกรมการทำงาน โดยเฉพาะอย่างยิ่งฉันรู้ว่าถ้าฉันสามารถแยกฟังก์ชั่นหรือสามสำหรับแต่ละสี่กลยุทธ์ข้างต้นที่กำหนดประเภทของคุณสมบัติที่ฉันกำลังมองหาเพื่อเปรียบเทียบ (เช่นคีย์หรือค่า ฯลฯ ) จากนั้นฉันอาจ สามารถลด …

3
ฟังก์ชั่นการรับค่าจากฟังก์ชั่นอื่นถือว่าบริสุทธิ์หรือไม่
ฉันกำลังพยายามหาวิธีจัดการกับค่าตัวแปรเริ่มต้นเมื่อสร้างฟังก์ชั่นที่ไม่มีผลข้างเคียงและสิ้นสุดลงด้วยสิ่งต่อไปนี้: function getDefaultSeparator() { return ':'; } function process(input, separator) { var separator = separator || getDefaultSeparator(); // Use separator in some logic return output; } ตัวคั่นเริ่มต้นจะใช้ในฟังก์ชั่นอื่นและฉันต้องการกำหนดไว้ในที่เดียวเท่านั้น หากนี่คือฟังก์ชั่นที่บริสุทธิ์ความแตกต่างจากการใช้ค่าคงที่ DEFAULT_SEPARATOR ทั่วโลกแทนคืออะไร

1
การชักรอกใน Javascript === รวบรวม?
ฉันเจอมุมมองที่น่าสนใจในการสัมภาษณ์งานเมื่อเร็ว ๆ นี้ การยกใน Javascript นั้นเกี่ยวกับการย้ายการประกาศตัวแปรและการประกาศฟังก์ชันที่ด้านบนของสคริปต์ เราสามารถเรียกเฟสนี้เป็นการรวบรวมได้หรือไม่? ฉันทราบเกี่ยวกับความจริงที่ว่า Javascript interpreter มี 2 การส่งผ่านสคริปต์การป้อนข้อมูลซึ่งในครั้งแรกที่มันผ่านการชักรอกและครั้งที่สองที่มันดำเนินการสคริปต์จริง รู้ว่า Javascript เป็นภาษาที่ตีความคำถามนี้ทำให้ฉันสับสนเล็กน้อย

3
การพัฒนาขับเคลื่อนทดสอบข้ามภาษา
คำถามสั้น ๆ : คุณติดตามการพัฒนาที่ขับเคลื่อนด้วยการทดสอบในโครงการที่ครอบคลุมหลายภาษาได้อย่างไร โดยเฉพาะฉันเขียนเว็บแอปพลิเคชันที่ใช้ JavaScript และ PHP และฉันต้องการที่จะปฏิบัติตามหลักการ TDD แต่ฉันไม่แน่ใจว่าจะรวมพวกเขาได้อย่างไร ฉันจะรันชุดทดสอบแยกต่างหากสำหรับส่วน JS และ PHP และใช้ mocks ในชุด JS เพื่อจำลองการตอบสนองของเซิร์ฟเวอร์หรือไม่ มีเทคนิคสำหรับการทดสอบหน่วยทั้งสองส่วนประกอบในการทดสอบครั้งเดียวหรือไม่? นี่เป็นประสบการณ์ครั้งแรกของฉันในการใช้การพัฒนาที่ขับเคลื่อนด้วยการทดสอบดังนั้นคำแนะนำใด ๆ ที่คุณสามารถแบ่งปันเกี่ยวกับวิธีทำให้มันน้อยลง เหตุผลที่ฉันเลือกคือเมื่อฉันสร้างต้นแบบเสร็จข้อกำหนดก็เปลี่ยนไปทำให้ฉันต้องเปลี่ยนการออกแบบ ฉันคิดว่าถ้าฉันเริ่มต้นฉันต้องการที่จะเขียนรหัสที่สามารถขยายได้มากขึ้นด้วยการทดสอบการถดถอยในตัวตั้งแต่เริ่มต้น ฉันกำลังเขียนการทดสอบ PHP ของฉันใน SimpleTest และการทดสอบ JavaScript ของฉันใน JsTestDriver ฉันคุ้นเคยกับกระบวนทัศน์เชิงวัตถุดังนั้นฉันจึงมีบางคลาสใน PHP และฉันทำสิ่งที่คล้ายกันใน JavaScript โดยใช้การสืบทอดต้นแบบ ฉันก็เริ่มอ่านหนังสือเล่มนี้เกี่ยวกับ TDD ใน Pythonและหนังสือเล่มนี้เกี่ยวกับ TDD ใน JavaScriptแต่จากสิ่งที่ฉันได้เห็นสิ่งเหล่านี้ไม่ได้อธิบายการทดสอบแอปพลิเคชันแบบเต็ม (นอกการใช้บางอย่างเช่น Selenium หรือไดรเวอร์เว็บอื่น เพื่อทำการทดสอบการยอมรับแบบ …

2
การสร้างรหัสผ่านโดยอัตโนมัติในระหว่างการลงทะเบียนเป็นความคิดที่ดีหรือไม่
ฉันกำลังพัฒนาระบบการลงทะเบียนสำหรับโครงการที่ฉันกำลังทำอยู่ เนื่องจากผู้ใช้มักจะไม่สมัครใช้งานหากกระบวนการนี้ยาวเกินไปฉันคิดว่าจะต้อง (อย่างน้อยเริ่มต้น) เพียงแค่อีเมลของพวกเขาซึ่งฉันจะส่งรหัสผ่านที่สร้างขึ้นโดยอัตโนมัติให้พวกเขา (และนั่นจะทำให้ฉันสามารถยืนยันที่อยู่อีเมลของพวกเขาได้ ) ซึ่งจะป้องกันไม่ให้พวกเขาเลือกรหัสผ่านที่ไม่รัดกุมเพื่อให้การลงทะเบียนเสร็จสมบูรณ์อย่างรวดเร็ว ฉันยังไม่พบข้อเสีย แต่ฉันกลัวว่ามีบางอย่างที่ฉันไม่เคยเห็นไซต์ที่ใช้ระบบนี้ นั่นเป็นความคิดที่ดีหรือไม่? PS: แน่นอนฉันยังสมัครใช้งานผ่าน Facebook และบริการอื่น ๆ ที่คล้ายกันเพื่อให้ผู้คนสมัครใช้งานได้อย่างรวดเร็วโดยไม่ต้องใช้รหัสผ่าน แต่หลายคนอาจต้องการเลือกสมัครใช้แบบดั้งเดิมสำหรับข้อกังวลด้านความเป็นส่วนตัวหรือเพราะพวกเขาไม่ ใช้บริการเหล่านั้น

2
การทดสอบหน่วยเฟรมเวิร์ก stateful เช่น Phaser?
TL; DRฉันต้องการความช่วยเหลือในการระบุเทคนิคเพื่อลดความซับซ้อนของการทดสอบหน่วยอัตโนมัติเมื่อทำงานภายในกรอบงานที่เป็นมลรัฐ พื้นหลัง: ฉันกำลังเขียนเกมใน typescript และเป็นกรอบ Phaser Phaser อธิบายว่าตัวเองเป็นเกมเฟรมเวิร์ก HTML5 ที่พยายามอย่างน้อยที่สุดเพื่อ จำกัด โครงสร้างของรหัสของคุณ สิ่งนี้มาพร้อมกับการแลกเปลี่ยนไม่กี่อย่างนั่นคือมีPhaser God-object อยู่ซึ่งอนุญาตให้คุณเข้าถึงทุกสิ่ง: แคชฟิสิกส์สถานะเกมและอื่น ๆ สถานะนี้ทำให้ยากต่อการทดสอบการใช้งานมากมายเช่นไทล์แมปของฉัน ลองดูตัวอย่าง: ที่นี่ฉันกำลังทดสอบว่าเลเยอร์ไทล์ของฉันถูกต้องหรือไม่และฉันสามารถระบุกำแพงและสิ่งมีชีวิตภายในไทล์แมปของฉัน: export class TilemapTest extends tsUnit.TestClass { constructor() { super(); this.map = this.mapLoader.load("maze", this.manifest, this.mazeMapDefinition); this.parameterizeUnitTest(this.isWall, [ [{ x: 0, y: 0 }, true], [{ x: 1, y: 1 }, …

2
การออกแบบแอปพลิเคชัน Javascript MVC (แคนวาส)
ฉันมีปัญหาในการเข้าใจวิธีการจัดโครงสร้าง / ออกแบบแอปพลิเคชั่นแคนวาสโดยใช้ MVC เหมือนกับแนวทางใน Javascript UI จะค่อนข้างลื่นไหลและมีชีวิตชีวาเกมค่อนข้างง่าย แต่เน้นหนักไปที่การทวีตและภาพเคลื่อนไหว ฉันเข้าใจวิธีการทำงานของ MVC ในหลักการ แต่ไม่ใช่ในทางปฏิบัติ ฉันเริ่มดื่มเหล้าจากที่นี่อ่านมาก ๆ และตอนนี้ฉันก็สับสนเหมือนตอนที่ฉันเริ่ม รายละเอียดบางอย่างเกี่ยวกับพื้นที่แอพพลิเคชัน: เฟรมเวิร์กเกมหลายหน้าจอ - เกมหลายเกมจะอยู่ภายในกรอบ "หน้าจอ" UI ทั่วไปนี้รวมถึง: การตั้งค่าข้อมูลเลือกความยากลำบากเมนูหลักเป็นต้น วิธีการป้อนข้อมูลหลายวิธี องค์ประกอบ UI ทั่วไปเช่นแถบเมนูด้านบนในบางหน้าจอ ความเป็นไปได้ของการใช้วิธีการแสดงผลที่แตกต่างกัน (canvas / DOM / webGL) ในตอนนี้ฉันมี AppModel, AppController และ AppView จากที่นี่ฉันวางแผนที่จะเพิ่ม "หน้าจอ" แต่ละรายการและแนบไปยัง AppView แต่สิ่งที่เกี่ยวกับสิ่งต่าง ๆ เช่นแถบเมนูด้านบนพวกเขาควรเป็น MVC สามกลุ่มอื่นหรือไม่ ฉันจะติดตั้งที่ไหนและอย่างไรโดยไม่ต้องมีการเชื่อมต่ออย่างแน่นหนา? เป็นวิธีปฏิบัติที่ยอมรับได้หรือไม่ที่จะมี …

3
แอป HTML5 และ JS หยุดทำงานได้ดีเท่าแอพทั่วไปอย่างไร
จากสิ่งที่ฉันเข้าใจ HTML เป็นภาษามาร์กอัปดังนั้นเนื้อหาของ XAML, XIB และสิ่งที่ Android ใช้และกรอบการพัฒนา UI ดั้งเดิมอื่น ๆ JavaScript เป็นภาษาการเขียนโปรแกรมที่ใช้พร้อมกับมันเพื่อจัดการสคริปต์ฝั่งไคลเอ็นต์ซึ่งจะรวมถึงสิ่งต่าง ๆ เช่นการจัดการเหตุการณ์การตรวจสอบด้านไคลเอนต์และสิ่งอื่นใด C #, Java, Objective-C หรือ C ++ ทำในกรอบดังกล่าว มีรูปแบบ MVC / MVVM ในกรอบรูปแบบเช่น Sencha's, Angular และอื่น ๆ เรามี localStorage ในรูปแบบของ sqlite และ key-value store ตามกรอบอื่น ๆ และคุณมีข้อกำหนด API สำหรับเกือบทุกอย่างที่มันหายไป เมื่อใดก็ตามที่เฟรมเวิร์กของ UI นั้นต้องแสดงผล UI ก็จะต้องทำการแยกวิเคราะห์มาร์กอัพและแสดงผล UI …

2
ผลข้างเคียงใน“ ทุกคน” ของ Array หรือ“ ไม่ดี” บ้างหรือไม่?
ฉันถูกสอนมาตลอดว่าการมีผลข้างเคียงในifสภาพที่ไม่ดี ที่ฉันหมายถึงคือ; if (conditionThenHandle()) { // do effectively nothing } ... ตรงข้ามกับ; if (condition()) { handle(); } ... และฉันเข้าใจว่าและเพื่อนร่วมงานของฉันมีความสุขเพราะฉันไม่ได้ทำและเราทุกคนกลับบ้านเวลา 17:00 น. ในวันศุกร์และทุกคนมีวันหยุดสุดสัปดาห์ที่มีความสุข ตอนนี้ ECMAScript5 แนะนำวิธีการเช่นevery()และsome()เพื่อArrayและฉันพบว่าพวกเขามีประโยชน์มาก พวกมันสะอาดกว่าfor (;;;)ให้ขอบเขตกับคุณและทำให้องค์ประกอบเข้าถึงได้โดยตัวแปร แต่เมื่อตรวจสอบการป้อนข้อมูลผมมากขึ้นบ่อยกว่าไม่พบตัวเองโดยใช้every/ someอยู่ในสภาพที่จะตรวจสอบการป้อนข้อมูลแล้วใช้every/ some อีกครั้งในร่างกายการแปลงการป้อนข้อมูลในรูปแบบที่ใช้งานได้; if (input.every(function (that) { return typeof that === "number"; })) { input.every(function (that) { // Model.findById(that); etc } } …

4
ภาษาการเขียนโปรแกรมสามารถทำงานได้ดีโดยไม่มีคำสั่ง?
ในฐานะที่เป็นการเขียนโปรแกรมใน JavaScript ฉันได้สังเกตเห็นทุกสิ่งที่สามารถทำได้ด้วยคำสั่งและบล็อกสามารถทำได้ด้วยการแสดงออกเพียงอย่างเดียว ภาษาการเขียนโปรแกรมสามารถทำงานได้ดีกับนิพจน์เท่านั้นหรือไม่ และถ้าใช่ทำไมจึงมีการใช้ข้อความทั้งหมด?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.