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

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

6
ข้อดีและข้อเสียของ Coffeescript คืออะไร [ปิด]
แน่นอนโปรใหญ่หนึ่งคือปริมาณน้ำตาล syntactic ที่นำไปสู่รหัสที่สั้นลงในหลายกรณี บนhttp://jashkenas.github.com/coffee-script/มีตัวอย่างที่น่าประทับใจ ในทางกลับกันฉันสงสัยว่าตัวอย่างเหล่านี้แสดงถึงรหัสของแอปพลิเคชันโลกแห่งความซับซ้อน ในรหัสของฉันเช่นฉันไม่เคยเพิ่มฟังก์ชั่นไปยังวัตถุที่เปลือยเปล่า แต่แทนที่จะเป็นต้นแบบของพวกเขา ยิ่งไปกว่านั้นคุณสมบัติต้นแบบถูกซ่อนไว้จากผู้ใช้ซึ่งแนะนำ OOP แบบคลาสสิกมากกว่าจาวาสคริปต์ที่ใช้สำนวน ตัวอย่างความเข้าใจอาร์เรย์จะดูในรหัสของฉันอาจเป็นดังนี้: cubes = $.map(list, math.cube); // which is 8 characters less using jQuery...

7
มูลค่าที่แท้จริงของรูปแบบรหัสที่สอดคล้องกันคืออะไร
ฉันเป็นส่วนหนึ่งของทีมที่ปรึกษาที่ใช้โซลูชันใหม่สำหรับลูกค้า ฉันรับผิดชอบในการทบทวนโค้ดส่วนใหญ่ใน codebase ฝั่งไคลเอ็นต์ (ตอบโต้และจาวาสคริปต์) ฉันสังเกตเห็นว่าสมาชิกในทีมบางคนใช้รูปแบบการเข้ารหัสที่ไม่เหมือนใครจนถึงจุดที่ฉันสามารถเลือกไฟล์แบบสุ่มโดยบอกว่าใครเป็นผู้แต่งจากสไตล์คนเดียว ตัวอย่างที่ 1 (ฟังก์ชั่นอินไลน์แบบครั้งเดียว) React.createClass({ render: function () { var someFunc = function () { ... return someValue; }; return <div>{someFunc()}</div> } }); ผู้เขียนระบุว่าด้วยการกำหนดชื่อที่มีความหมายให้กับบางส่วนการตัดรหัสจะง่ายต่อการอ่าน ฉันเชื่อว่าการใช้ฟังก์ชั่นและเพิ่มความคิดเห็นแทนการใช้เอฟเฟกต์เดียวกันสามารถทำได้ ตัวอย่างที่ 2 (ฟังก์ชันที่ไม่ถูกผูก) function renderSomePart(props, state) { return ( <div> <p>{props.myProp}</p> <p>{state.myState}</p> </div> ); } React.createClass({ render: function () { …

2
กลยุทธ์ในการสร้างตัวระบุที่ไม่ซ้ำใครและปลอดภัยสำหรับใช้ในแอปพลิเคชันเว็บ "บางครั้งออฟไลน์"
ฉันมีโครงการบนเว็บที่ให้ผู้ใช้สามารถทำงานได้ทั้งออนไลน์และออฟไลน์และฉันกำลังมองหาวิธีในการสร้างรหัสที่ไม่ซ้ำกันสำหรับบันทึกในฝั่งไคลเอ็นต์ ฉันต้องการวิธีการที่ใช้งานได้ในขณะที่ผู้ใช้ออฟไลน์ (เช่นไม่สามารถพูดคุยกับเซิร์ฟเวอร์) ได้รับการรับรองว่าไม่ซ้ำใครและปลอดภัย ด้วย "ความปลอดภัย" ฉันกังวลเป็นพิเศษเกี่ยวกับลูกค้าที่ส่งรหัสซ้ำ (โดยไม่ประสงค์ดีหรืออย่างอื่น) และทำให้เกิดความเสียหายต่อความสมบูรณ์ของข้อมูล ฉันทำ googling มาบ้างหวังว่านี่จะเป็นปัญหาที่แก้ไขแล้ว ฉันไม่พบสิ่งใดที่ชัดเจนมากโดยเฉพาะในแง่ของวิธีการที่ใช้ในระบบการผลิต ฉันพบตัวอย่างบางส่วนสำหรับระบบที่ผู้ใช้จะเข้าถึงข้อมูลที่พวกเขาสร้างขึ้นเท่านั้น (เช่นรายการสิ่งที่ต้องทำที่เข้าถึงได้บนอุปกรณ์หลายเครื่อง แต่เฉพาะผู้ใช้ที่สร้างขึ้นเท่านั้น) น่าเสียดายที่ฉันต้องการบางสิ่งที่ซับซ้อนกว่านี้เล็กน้อย ฉันพบความคิดที่ดีจริงๆที่นี่ซึ่งสอดคล้องกับวิธีที่ฉันคิดว่าสิ่งต่าง ๆ อาจทำงานได้ ด้านล่างนี้เป็นโซลูชันที่เสนอของฉัน ข้อกำหนดบางประการ รหัสควรไม่ซ้ำกันทั่วโลก (หรืออย่างน้อยไม่ซ้ำกันภายในระบบ) สร้างขึ้นบนไคลเอนต์ (เช่นผ่านทางจาวาสคริปต์ในเบราว์เซอร์) ปลอดภัย (ดังที่อธิบายไว้ข้างต้นและอื่น ๆ ) ข้อมูลสามารถดู / แก้ไขโดยผู้ใช้หลายคนรวมถึงผู้ใช้ที่ไม่ได้เขียน ไม่ทำให้เกิดปัญหาเรื่องประสิทธิภาพที่สำคัญสำหรับแบ็กเอนด์ db (เช่น MongoDB หรือ CouchDB) โซลูชันที่เสนอ เมื่อผู้ใช้สร้างบัญชีพวกเขาจะได้รับ uuid ซึ่งสร้างขึ้นโดยเซิร์ฟเวอร์และทราบว่าไม่ซ้ำกันภายในระบบ รหัสนี้จะต้องไม่เหมือนกับโทเค็นการตรวจสอบความถูกต้องของผู้ใช้ ลองเรียกรหัสนี้ว่า "id token" ของผู้ใช้ เมื่อผู้ใช้สร้างเรกคอร์ดใหม่พวกเขาสร้าง uuid …

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

8
ทำไมเกือบจะไม่มีหน้าแฮรหัสผ่านในไคลเอนต์ก่อนที่จะส่ง (และ hashing พวกเขาอีกครั้งบนเซิร์ฟเวอร์) เพื่อ“ ป้องกัน” จากการใช้รหัสผ่านซ้ำ?
มีเว็บไซต์จำนวนมากบนอินเทอร์เน็ตที่ต้องการข้อมูลการเข้าสู่ระบบและวิธีเดียวที่จะป้องกันการใช้รหัสผ่านซ้ำคือ "สัญญา" ว่ารหัสผ่านจะถูกแฮชบนเซิร์ฟเวอร์ซึ่งไม่ได้เป็นจริงเสมอไป ดังนั้นฉันจึงสงสัยว่าการสร้างหน้าเว็บที่แฮชรหัสผ่านในคอมพิวเตอร์ไคลเอนต์ (ด้วย Javascript) นั้นมีความยากขนาดไหนก่อนส่งไปยังเซิร์ฟเวอร์ซึ่งจะถูกแฮชอีกครั้ง ในทางทฤษฎีสิ่งนี้ไม่ได้ให้ความปลอดภัยเป็นพิเศษ แต่ในทางปฏิบัติสิ่งนี้สามารถใช้เพื่อป้องกัน "ไซต์หลอกลวง" ที่ไม่ใช้รหัสผ่านของคุณในเซิร์ฟเวอร์

4
เพราะเหตุใด + จึงไม่ดีสำหรับการต่อข้อมูล
ทุกคนยังคงบอกว่าหนึ่งในปัญหาของ JavaScript กำลังใช้+[ ตัวอย่าง ] สำหรับการต่อสตริง บางคนบอกว่าไม่ได้ใช้ปัญหา+มันเป็นประเภทข่มขู่ [ดูความคิดเห็นจากตัวอย่างก่อนหน้านี้] แต่ภาษาที่พิมพ์อย่างรุนแรงใช้ + สำหรับการเรียงต่อกันและประเภทการรวมตัวโดยไม่มีปัญหาใด ๆ ตัวอย่างเช่นใน C #: int number = 1; MyObject obj = new MyObject(); var result = "Hello" + number + obj; // is equivalent to string result = "hello" + number.ToString() + obj.ToString(); ดังนั้นทำไมการต่อสตริงใน JavaScript จึงเป็นปัญหาใหญ่
44 javascript 

4
ทำไมนักพัฒนา C # ขึ้นบรรทัดใหม่การเปิดวงเล็บ [ปิด]
ฉันใช้เวลาส่วนใหญ่ในช่วงหลายปีที่ผ่านมาทำงานเป็นหลักกับ C # และ SQL โปรแกรมเมอร์ทุกคนที่ฉันทำงานด้วยในช่วงเวลานั้นอยู่ในนิสัยของการวางวงเล็บเปิดของคำสั่งฟังก์ชั่นหรือการควบคุมการไหลของบรรทัดใหม่ ดังนั้น ... public void MyFunction(string myArgument) { //do stuff } if(myBoolean == true) { //do something } else { //do something else } ฉันได้รับการหลงโดยพื้นที่ที่สิ้นเปลืองนี้โดยเฉพาะในงบ / อื่น ๆ และฉันรู้ว่ามีตัวเลือกอื่นใน C # รุ่นที่ใหม่กว่าเช่น: if(myBoolean == true) //do something on one line of code แต่ไม่ค่อยมีใครใช้พวกเขา ทุกคนทำสิ่งที่หยิก - …
44 java  c#  javascript  syntax 

2
การจัดเก็บข้อมูลท้องถิ่นอยู่ภายใต้กฎหมายคุกกี้หรือไม่ [ปิด]
ฉันต้องการหลีกเลี่ยงการมีแบนเนอร์คุกกี้ในเว็บไซต์ของฉันหากเป็นไปได้ ฉันสามารถจัดเก็บ session id ไว้ใน localStorage เพื่อข้ามการติดตั้งแบนเนอร์ได้หรือไม่?
43 javascript  html 

5
วิธีหลีกเลี่ยง“ ความผิดพลาดทางภาษาแบบไดนามิก” โดยทั่วไปได้อย่างไร?
เมื่อเร็ว ๆ นี้ฉันได้เทจ JavaScript ลงไปสองสามชั่วโมงเพราะฉันต้องการได้รับประโยชน์จากฐานผู้ใช้ขนาดใหญ่ การทำเช่นนั้นฉันได้สังเกตเห็นรูปแบบที่คนส่วนใหญ่ใช้กับภาษาแบบไดนามิก คุณจะได้รับสิ่งที่ทำงานได้อย่างรวดเร็วจริงๆ แต่เมื่อรหัสของคุณถึงขนาดที่กำหนดคุณเสียเวลามากกับการพิมพ์การสะกดและการเปลี่ยนข้อผิดพลาดโดยทั่วไป ข้อผิดพลาดที่คอมไพเลอร์ปกติจะช่วยฉันจาก และไม่ให้ฉันค้นหาข้อผิดพลาดในตรรกะเมื่อฉันทำผิดในโมดูลอื่น การพิจารณาจาวาสคริปต์ต่อไปนี้และภาษาที่พิมพ์แบบไดนามิกอื่น ๆ ทำให้ฉันเชื่อว่ามีบางอย่างผิดปกติกับแนวทางของฉัน หรือนี่เป็นเพียงราคาที่คุณต้องจ่าย? วิธีทำให้รัดกุมยิ่งขึ้น: คุณเข้าใกล้โครงการ JavaScript (หรือภาษาไดนามิกอื่น ๆ สำหรับเรื่องนั้น) ด้วย ~ 2000 LOC อย่างไร มีเครื่องมือในการป้องกันไม่ให้ฉันทำผิดพลาดเหล่านั้นหรือไม่? ฉันลองใช้การไหลผ่าน Facebook และ JSHint ซึ่งค่อนข้างจะช่วยได้ แต่ไม่จับความผิดพลาด


3
มีอะไรเลวร้ายเกี่ยวกับ DOM
ฉันคอยฟังคน (โดยเฉพาะ Crockford) พูดว่า DOM เป็น API ที่แย่มาก แต่ไม่ได้พิสูจน์ความเป็นจริงของคำสั่งนี้ นอกเหนือจากความไม่สอดคล้องกันของเบราว์เซอร์แล้วอะไรคือสาเหตุที่ทำให้ DOM ถูกพิจารณาว่าไม่ดี?

7
การอ้างอิงจาวาสคริปต์ภายนอกกับการโฮสต์สำเนาของฉันเอง
บอกว่าฉันมีเว็บแอปที่ใช้ jQuery เป็นการดีกว่าถ้าจะโฮสต์ไฟล์ javascript ที่จำเป็นในเซิร์ฟเวอร์ของฉันพร้อมกับไฟล์เว็บไซต์ของฉันหรืออ้างอิงกับ CDN ของ jQuery (ตัวอย่าง: http://code.jquery.com/jquery-1.7.1.min.js ) ? ฉันเห็นข้อดีทั้งสองด้าน: ถ้าอยู่บนเซิร์ฟเวอร์ของฉันนั่นคือการพึ่งพาจากภายนอกน้อยกว่า ถ้า jQuery ลงหรือเปลี่ยนโครงสร้างการโฮสต์หรืออะไรทำนองนั้นแอพของฉันก็จะแตก แต่ฉันรู้สึกว่ามันจะไม่เกิดขึ้นบ่อยครั้ง ต้องมีไซต์เล็ก ๆ จำนวนมากในการดำเนินการนี้และทีม jQuery จะต้องการหลีกเลี่ยงการทำลายไซต์เหล่านั้น ถ้าอยู่บนเซิร์ฟเวอร์ของฉันนั่นเป็นข้อมูลอ้างอิงภายนอกที่น้อยกว่าที่ใครบางคนสามารถเรียกได้ว่าเป็นปัญหาด้านความปลอดภัย หากมีการอ้างอิงจากภายนอกฉันไม่ต้องกังวลเกี่ยวกับแบนด์วิดท์เพื่อให้บริการไฟล์ (แม้ว่าฉันรู้ว่ามันไม่มาก หากมีการอ้างอิงจากภายนอกและฉันกำลังปรับใช้เว็บไซต์นี้ไปยังเซิร์ฟเวอร์จำนวนมากที่ต้องมีสำเนาของไฟล์ทั้งหมดของตัวเองแล้วมันเป็นไฟล์ที่น้อยกว่าที่ฉันต้องจำไว้เพื่อคัดลอก / อัปเดต

8
ฉันจะเริ่มต้นกับ HTML5 ได้อย่างไร [ปิด]
เวิร์กโฟลว์ที่แนะนำคืออะไรในการเรียนรู้ HTML5 ฉันควรติดตั้งเครื่องมืออะไร SDK อะไร จะเริ่มที่ไหนดี วิธีทดสอบ วิธีแก้ปัญหา? ฉันจะอ่านอะไร ฉันเข้าใจว่าสิ่งที่มักถูกระบุว่าเป็น "การพัฒนา HTML5" นั้นอันที่จริงแล้วเป็นการผสมผสานระหว่าง HTML, CSS, JS และอื่น ๆ แต่ฉันไม่เชื่อว่าโครงการขนาดใหญ่จะได้รับการพัฒนาใน Notepad นั่นคือเหตุผลที่ฉันขอให้คุณเปิดเผยเคล็ดลับและกลเม็ดของคุณเกี่ยวกับขั้นตอนการทำงานของคุณ
42 javascript  html  css  ajax  html5 

9
JS Boolean มีคุณสมบัติที่กำหนดเองเป็นแนวปฏิบัติที่ไม่ดีหรือไม่?
ใน JS คุณสามารถส่งคืนบูลีนที่มีคุณสมบัติแบบกำหนดเองได้ เช่น. เมื่อ Modernizr ทดสอบการรองรับวิดีโอจะส่งคืนtrueหรือfalseแต่ Boolean ที่ส่งคืน (Bool เป็นออบเจ็กต์ชั้นหนึ่งใน JS) มีคุณสมบัติที่ระบุรูปแบบที่สนับสนุน ตอนแรกมันทำให้ฉันประหลาดใจนิดหน่อย แต่จากนั้นฉันก็เริ่มชอบความคิดและเริ่มสงสัยว่าทำไมมันถึงถูกใช้อย่าง จำกัด ดูเหมือนว่าเป็นวิธีที่ยอดเยี่ยมในการจัดการกับสถานการณ์ทั้งหมดที่คุณต้องการทราบว่ามีบางสิ่งที่เป็นจริงหรือเท็จ แต่คุณอาจสนใจข้อมูลเพิ่มเติมบางอย่างที่คุณสามารถกำหนดได้โดยไม่ต้องกำหนดวัตถุส่งคืนแบบกำหนดเองหรือใช้ฟังก์ชัน ยอมรับพารามิเตอร์เพิ่มเติม วิธีนี้คุณจะรักษาลายเซ็นฟังก์ชันที่เป็นสากลโดยไม่ลดทอนความสามารถในการส่งคืนข้อมูลที่ซับซ้อน มีข้อโต้แย้ง 3 ข้อที่ฉันสามารถจินตนาการได้: มันค่อนข้างแปลก / คาดไม่ถึงเมื่อมันน่าจะดีกว่าสำหรับอินเทอร์เฟซใด ๆ ที่จะชัดเจนและไม่ยุ่งยาก นี่อาจเป็นอาร์กิวเมนต์คนฟาง แต่เป็นกรณีเล็กน้อยฉันสามารถจินตนาการมัน backfires เงียบ ๆ ใน JS optimizer, uglifier, VM หรือหลังจากการเปลี่ยนแปลงข้อกำหนดภาษาเล็กน้อยทำความสะอาด ฯลฯ มีวิธีที่ดีกว่ากระชับชัดเจนและเหมือนกันทุกประการ ดังนั้นคำถามของฉันคือมีเหตุผลใดที่ควรหลีกเลี่ยงการใช้ Booleans ด้วยคุณสมบัติเพิ่มเติมหรือไม่ พวกเขาเป็นกลอุบายหรือการรักษา? แผนบิดเตือน ข้างต้นเป็นคำถามเดิมในเกียรติศักดิ์เต็ม ในฐานะที่เป็น Matthew Crumley …

7
ทำไมไม่ฝังสไตล์ / สคริปต์ใน HTML แทนที่จะเชื่อมโยง?
เราเชื่อมไฟล์ CSS และ JavaScript เข้าด้วยกันเพื่อลดจำนวนคำขอ HTTP ซึ่งช่วยเพิ่มประสิทธิภาพ ผลที่ได้คือ HTML ดังนี้ <link rel="stylesheet" href="all-my-css-0fn392nf.min.css"> <!-- later... --> <script src="all-my-js-0fn392nf.min.js"></script> หากเรามีตรรกะฝั่งเซิร์ฟเวอร์ / บิลด์เพื่อทำสิ่งนี้ให้กับเราทำไมไม่ลองอีกขั้นหนึ่งแล้วฝังสไตล์และสคริปต์ที่ต่อกันเหล่านั้นลงใน HTML <style>.all{width:100%;}.my{display:none;}.css{color:white;}</style> <!-- later... --> <script>var all, my, js;</script> นั่นเป็นคำขอ HTTP ที่น้อยลงสองคำขอ แต่ฉันไม่เคยเห็นเทคนิคนี้มาก่อน ทำไมจะไม่ล่ะ?

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