จะเริ่มสร้างเว็บเบราว์เซอร์ได้อย่างไร? [ปิด]


89

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

คำแนะนำใด ๆ ขอชื่นชมอย่างมาก!


9
ใช่มันเป็นโครงการที่บ้า แต่เราไม่จำเป็นต้องรับมิกกี้มาที่นี่ - ฉันคิดว่ามันเป็นประเด็นสนทนาที่ดีว่าคุณจะทำอย่างไร :)
รอส

8
ฉันจำบทความเมื่อครั้งก่อนที่ใครบางคนคร่ำครวญถึงความจริงที่ว่าไม่มีใครกล้าสร้างเอนจิ้นการเรนเดอร์ใหม่อีกต่อไป เขากล่าวว่าจำเป็นต้องใช้เบราว์เซอร์ใหม่เนื่องจากคอมพิวเตอร์ในปัจจุบันมีความแตกต่างกัน หลายคอร์ ขั้นตอนแรกคือ Chrome โดยมี 1 กระบวนการต่อแท็บ มาดูกันว่าจะมีอะไรต่อไป
stesch

36
เติบโตลูกบอลและทำในสิ่งที่คุณต้องการ ถ้ามันใช้งานได้ดี ถ้าไม่พยายามต่อไปไม่อย่างนั้นคุณจะต้องเจอกับคนอีกครึ่งหนึ่งของสังคมที่บอกว่า "อย่าสร้างอะไรใหม่ ๆ เพียงแค่ใช้เศษขยะที่เรามีอยู่แล้ว"
uSeRnAmEhAhAhAhAhA

7
คุณจำเป็นต้องใช้ยาเหล่านั้นแบรดลีย์คูเปอร์ใช้เวลาในการที่ไร้ขีด จำกัด ;)
Ali Gajani

3
ปล่อยมันไป. ฉันพนันได้เลยว่ามันง่ายกว่าที่คนพูดกันมากโดยเฉพาะอย่างยิ่งถ้าคุณต่อส่วนประกอบที่มีอยู่จำนวนมากเข้าด้วยกัน การแยกวิเคราะห์ข้อความและแสดงกล่องสีที่มีข้อความอยู่ข้างในทำได้ยากเพียงใด
Ian Warburton

คำตอบ:


131

แบ่งมันออกเป็นชิ้น ๆ เว็บเบราว์เซอร์คืออะไร? มันทำอะไร? มัน:

  • ดึงเนื้อหาภายนอก ดังนั้นคุณต้องมีไลบรารี HTTP หรือ (ไม่แนะนำ) เขียนด้วยตัวเอง มีความซับซ้อน / ละเอียดอ่อนมากมายสำหรับโปรโตคอล HTTP เช่นการจัดการส่วนหัวที่หมดอายุเวอร์ชันต่างๆ (แม้ว่าส่วนใหญ่จะเป็น 1.1 ในปัจจุบันก็ตาม) เป็นต้น
  • จัดการเนื้อหาประเภทต่างๆ มีรีจิสทรีของ Windos สำหรับสิ่งประเภทนี้ที่คุณสามารถเล่นได้ ฉันกำลังพูดถึงการตีความเนื้อหาตามประเภท MIME ที่นี่
  • แยกวิเคราะห์ HTML และ XML : เพื่อสร้าง DOM (Document Object Model);
  • แยกวิเคราะห์และใช้ CSS : สิ่งนี้เกี่ยวข้องกับการทำความเข้าใจคุณสมบัติทั้งหมดหน่วยวัดและวิธีการทั้งหมดที่สามารถระบุค่าได้ (เช่น "border: 1px solid black" เทียบกับ border-width แยกต่างหากคุณสมบัติ ฯลฯ );
  • ใช้โมเดลภาพ W3C (และนี่คือนักเตะตัวจริง); และ
  • มีเครื่องยนต์ Javascript

และนั่นก็คือเว็บเบราว์เซอร์โดยสรุป ตอนนี้งานบางอย่างมีความซับซ้อนอย่างไม่น่าเชื่อ แม้แต่คนที่ฟังง่ายก็ยาก ดึงเนื้อหาภายนอก คุณต้องจัดการกับกรณีการใช้งานเช่น:

  • ต้องใช้การเชื่อมต่อพร้อมกันกี่รายการ
  • เกิดข้อผิดพลาดในการรายงานไปยังผู้ใช้
  • พร็อกซี;
  • ตัวเลือกผู้ใช้;
  • เป็นต้น

เหตุผลที่ฉันและคนอื่น ๆ เลิกคิ้วของเราอย่างจริงจังก็คือเอ็นจิ้นการเรนเดอร์นั้นยาก (และอย่างที่มีคนตั้งข้อสังเกตว่ามนุษย์ได้พัฒนาไปหลายปีแล้ว) เอ็นจิ้นการเรนเดอร์หลัก ๆ ได้แก่ :

  • ตรีศูล:พัฒนาโดย Microsoft สำหรับ Internet Explorer;
  • Gecko:ใช้ใน Firefox;
  • Webkit:ใช้ใน Safari และ Chrome 0-27;
  • KHTML:ใช้ในสภาพแวดล้อมเดสก์ท็อป KDE Webkit แยกมาจาก KHTML เมื่อหลายปีก่อน
  • Elektra:ใช้ใน Opera 4-6;
  • Presto:ใช้ใน Opera 7-12;
  • Blink:ใช้ใน Chrome 28+, Opera 15+, webkit fork;

สามอันดับแรกต้องถือเป็นเอนจิ้นการเรนเดอร์หลักที่ใช้ในปัจจุบัน

เอ็นจิ้น Javascript ก็ยากเช่นกัน มีหลายอย่างที่มักจะเชื่อมโยงกับเอ็นจิ้นการเรนเดอร์เฉพาะ:

  • SpiderMonkey:ใช้ใน Gecko / Firefox;
  • TraceMonkey:จะแทนที่ SpiderMonkey ใน Firefox 3.1 และแนะนำการคอมไพล์ JIT (แบบทันเวลา)
  • KJS:ใช้โดย Konqueror เชื่อมโยงกับ KHTML;
  • JScript: เอ็นจิ้น Javascript ของ Trident ที่ใช้ใน Internet Explorer
  • JavascriptCore:ใช้ใน Webkit โดยเบราว์เซอร์ Safari
  • SquirrelFish:จะถูกใช้ใน Webkit และเพิ่ม JIT เช่น TraceMonkey
  • V8:เครื่องมือ Javascript ของ Google ที่ใช้ใน Chrome และ Opera
  • Opera (12.X และน้อยกว่า) ก็ใช้ของตัวเองเช่นกัน

และแน่นอนว่ามีอินเทอร์เฟซผู้ใช้ทั้งหมด: การนำทางระหว่างหน้า, ประวัติหน้า, การล้างไฟล์ชั่วคราว, การพิมพ์ URL, การเติม URL อัตโนมัติและอื่น ๆ

นั่นเป็นจำนวนมากของการทำงาน


* ตุ๊กแก :) เห็นด้วย ส่วนหลักคือตัวแสดง HTML และเอ็นจิ้น JavaScript
abatishchev

1
Opera สร้างขึ้นเอง Presto คือตัวปัจจุบันและ Electra เป็นรุ่นก่อนหน้า
Tim Sullivan

คำตอบเชิงลึกที่ยอดเยี่ยม - ฉันลืมเกี่ยวกับการแยกวิเคราะห์ JavaScript ด้วยกัน!
รอส

1
แม้ว่าโลกนี้ต้องการคนที่มีลูกบอลเพื่อสร้างเบราว์เซอร์มากขึ้น Cp eff.org/deeplinks/2016/04/save-firefox
Pacerier

28

ดูเหมือนเป็นโครงการที่น่าสนใจจริงๆ แต่คุณจะต้องลงทุนมหาศาล

ไม่ใช่เรื่องง่าย แต่จากมุมมองทางวิชาการคุณสามารถเรียนรู้ได้มากมายจากมัน

แหล่งข้อมูลบางอย่างที่คุณสามารถตรวจสอบได้:

แต่เมื่อมองจากมุมมองที่เป็นจริงความพยายามอย่างมากในการเขียนโค้ดตั้งแต่เริ่มต้นทำให้ฉันนึกถึงการ์ตูนเรื่องนี้:


(ที่มา: geekherocomic.com )

โชคดี :-)


GHC ดำเนินการต่อไปหรือไม่? คิดว่าฉันยกเลิกการสมัครเมื่อพวกเขาเริ่มทำสิ่งที่ซ่อนอยู่ของ Ross
รอส

@Ross: ใช่พวกเขายังคงส่งการ์ตูนผู้ชายคนใหม่คนนั้นชื่อว่าบอริสจากรัสเซียและเขาเป็น "Super Hacker" LOL
Christian C. Salvadó

17

เว็บเบราว์เซอร์ที่ทันสมัยส่วนใหญ่เป็นสัตว์ร้ายขนาดยักษ์และอาจได้รับการออกแบบมาไม่ดีนักเนื่องจาก (และตัวเว็บเอง) พัฒนาไปในทางที่ค่อนข้างจับจด

คุณต้องเริ่มต้นด้วยการกำหนดเป้าหมายของโครงการของคุณก่อน (และสิ่งที่คุณหวังว่าจะบรรลุ) ให้ชัดเจนมาก นี่เป็นสิ่งที่คุณทำเพื่อความสนุกสนานหรือคุณคาดหวังให้คนอื่นใช้เบราว์เซอร์ของคุณ? หากคุณคาดหวังให้คนอื่นใช้มันแรงจูงใจสำหรับพวกเขาจะเป็นอย่างไร? เป็นเรื่องไม่จริงที่จะคาดหวังว่าคุณจะพัฒนาเบราว์เซอร์ใหม่ตั้งแต่เริ่มต้นซึ่งทุกคนจะสามารถใช้แทน Chrome, Safari, Firefox, IE, Opera และอื่น ๆ โครงการทั้งหมดนี้มีระยะเวลาเริ่มต้น 10-15 ปี คุณและเมื่อคุณตามทันพวกเขาอีก 10-15 ปีข้างหน้าคุณ นอกจากนี้พวกเขายังมีพลังของมนุษย์อีกมากมายที่อยู่เบื้องหลังพวกเขาดังนั้นหากคุณต้องการให้โครงการของคุณประสบความสำเร็จคุณจะต้องมีพลังของผู้ชายคนนั้นในบางจุด

นี่คือเหตุผลที่ Apple และ Google บริษัท ใหญ่ที่มีทรัพยากรมากมายไม่ได้เริ่มต้นใหม่ตั้งแต่ต้น แม้กระทั่ง Microsoft ไม่ได้เริ่มต้นใหม่ตั้งแต่ต้น IE ดั้งเดิมนั้นใช้ Mosaic เบราว์เซอร์สำคัญเพียงตัวเดียวที่ยังคงมีอยู่ในปัจจุบันซึ่งเริ่มต้นตั้งแต่เริ่มต้น ได้แก่Opera , KonquerorและLynxซึ่งน่าเสียดายที่ทุกคนมีส่วนแบ่งการตลาดน้อย ลองลืมเกี่ยวกับ Lynx ไปสักครู่เนื่องจากมันเป็นเบราว์เซอร์แบบข้อความเท่านั้นและน่าจะเป็นเหตุผลเดียวที่ยังคงอยู่เพราะมันทำหน้าที่เฉพาะเจาะจงนั้น Opera เป็นหนึ่งในเบราว์เซอร์ที่ดีที่สุดเท่าที่เคยมีมา แต่ก็ไม่เคยมีส่วนแบ่งการตลาดที่ดีเยี่ยมดังนั้นอย่าลืมว่าความสำเร็จและนวัตกรรมไม่ใช่สิ่งเดียวกัน KHTML เป็นเครื่องมือที่อยู่เบื้องหลัง Konqueror ซึ่งไม่เคยประสบความสำเร็จมากนัก แต่เป็นพื้นฐานของ WebKit ที่ทั้ง Apple และ Google ใช้ ฉันคิดว่าอาจมีใครโต้แย้งได้อย่างแน่นอนว่าหากไม่เคยมีการสร้าง KHTML ก็จะไม่มีทั้ง Safari หรือ Chrome ที่น่าสนใจคือทั้ง KHTML และ Opera ส่วนใหญ่ผลิตโดยโปรแกรมเมอร์ชาวนอร์เวย์ที่ทำงานในอาคารเดียวกันในออสโล

คุณต้องดูการสร้างเว็บเบราว์เซอร์เช่นการสร้างระบบปฏิบัติการเพราะโดยพื้นฐานแล้วเบราว์เซอร์คือระบบปฏิบัติการสำหรับเรียกใช้เว็บแอป และเช่นเดียวกับระบบปฏิบัติการเว็บเบราว์เซอร์เป็นซอฟต์แวร์ที่ซับซ้อนมากซึ่งมีส่วนประกอบมากมาย แน่นอนว่าผู้คนประสบความสำเร็จในการสร้างระบบปฏิบัติการใหม่ตั้งแต่เริ่มต้น Linus Torvalds อยู่ในใจ เขาสร้างลินุกซ์ซึ่งเป็นหนึ่งในระบบปฏิบัติการที่ประสบความสำเร็จมากที่สุด

แน่นอนว่าคุณต้องเผชิญกับความท้าทายเพิ่มเติมซึ่งทำให้การสร้างเบราว์เซอร์ใหม่ที่ประสบความสำเร็จนั้นยากกว่าการสร้างระบบปฏิบัติการใหม่ที่ประสบความสำเร็จ คาดว่าเบราว์เซอร์จะเรียกใช้โค้ดดั้งเดิมทั้งหมดที่ลอยอยู่บนเว็บได้อย่างไม่มีที่ติ ตอนนี้สมมติว่า Linus Torvalds ได้รับแจ้งว่าระบบปฏิบัติการใหม่ของเขาจะไม่สำคัญเว้นแต่ว่าจะเข้ากันได้กับ UNIX หรือระบบปฏิบัติการที่มีอยู่เดิม ฉันสงสัยว่าเขาคงรำคาญและ Linux อาจจะไม่มีอยู่ในวันนี้ ตามความเป็นจริงแล้วเหตุผลเดียวที่ Linux เป็นที่นิยมก็เพราะว่าได้รับการออกแบบมาอย่างดีและโครงการ GNU สามารถสร้างเครื่องมือสำหรับการย้ายรหัสที่มีอยู่จำนวนมากไปยัง Linux ได้ หากไม่มีการสนับสนุนทางอุดมการณ์ของ GNU สำหรับ Linux ก็จะไม่มีโอกาส

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

ความคิดส่วนตัวของฉัน (โดยไม่ได้ทำการวิจัยมากพอ) คือเบราว์เซอร์ในปัจจุบันยังไม่สามารถแยกส่วนได้เพียงพอ ถ้าฉันจะสร้างเบราว์เซอร์ใหม่ฉันจะหาวิธีทำให้ง่ายต่อการสลับสิ่งต่างๆเข้าและออก (เช่นแทนที่ JavaScript engine หนึ่งกับอีกอันหนึ่ง) และให้ผู้ใช้ควบคุมได้มากกว่าที่มีอยู่ในเบราว์เซอร์ที่มีอยู่ในปัจจุบัน . เบราว์เซอร์และนักออกแบบเว็บไซต์สมัยใหม่ได้ควบคุมผู้ใช้ไปเกือบทั้งหมด เหตุใดผู้ใช้จึงไม่สามารถบอกเว็บเบราว์เซอร์ได้ว่าต้องการให้แสดงเนื้อหาที่แสดงบนเครื่องของฉันอย่างไร HTML ดั้งเดิมให้แนวทางในการจัดโครงสร้างเนื้อหาเท่านั้นและเมื่อเวลาผ่านไปมาตรฐานใหม่ ๆ ก็มีมากขึ้นเรื่อย ๆ จนถึงจุดที่ผู้ใช้อยู่ในความเมตตาโดยรวมของนักออกแบบเว็บไซต์ ความน่าสนใจของ Linux คือมันให้การควบคุมกลับไปยังผู้ใช้และนั่นคือ '

อีกอย่างที่ฉันจะใช้เวลาค้นคว้าถ้าฉันเป็นคุณคือหลักการออกแบบระบบปฏิบัติการ การออกแบบเบราว์เซอร์ที่ดีอย่างน้อยก็ควรจะต้องใช้หลักการเดียวกันกับการออกแบบระบบปฏิบัติการที่ดีโดยเฉพาะอย่างยิ่งในเรื่องของกระบวนการที่เกิดขึ้นพร้อมกันรูปแบบความปลอดภัย

ในที่สุดหลังจากทำการวิจัยมากมายแล้วนี่คือจุดที่คุณควรเริ่มเขียนโค้ดฉันคิดว่า:

  1. ออกแบบโมเสกใหม่แต่ด้วยแนวคิดการออกแบบของคุณเอง นี่คือสิ่งที่ฉันจะแนะนำหากคุณแค่ทำเพื่อความสนุกสนานหรือประโยชน์ทางการศึกษาของคุณเอง อ่านข้อกำหนด HTML 1.0 และ HTML 2.0 ดั้งเดิมตลอดจนข้อกำหนด HTTP 1.1 และข้อกำหนด URI ปัจจุบันและตรวจสอบว่าเบราว์เซอร์ของคุณปฏิบัติตามข้อกำหนดเหล่านั้นทั้งหมด แน่นอนคุณสามารถดาวน์โหลดซอฟต์แวร์ที่มีอยู่ซึ่งจัดการโปรโตคอลการขนส่งอนุสัญญา URI และอื่น ๆ อยู่แล้ว แต่ถ้าคุณจริงจังกับการออกแบบเบราว์เซอร์ของคุณเองฉันคิดว่ามันเป็นแบบฝึกหัดที่ดีที่จะทำสิ่งเหล่านี้ตั้งแต่เริ่มต้นเช่นกันดังนั้นคุณจะได้รับ ความรู้สึกที่ดีว่าชิ้นส่วนปริศนาทั้งหมดเข้ากันได้อย่างไร ในตอนท้ายของขั้นตอนที่ 0 คุณควรมีเบราว์เซอร์ที่เทียบเคียงได้กับสิ่งที่ล้ำสมัยในยุค 90 เป็นอย่างน้อย นี่เป็นก้าวแรกที่ดี และคุณสามารถดาวน์โหลด Mosaic ดั้งเดิมได้ที่ftp://ftp.ncsa.uiuc.edu/Mosaic/และดูว่าเปรียบเทียบกับเบราว์เซอร์ของคุณอย่างไร นอกจากนี้ยังเป็นแบบฝึกหัดที่ดีในการดูว่าเว็บไซต์ปัจจุบันแสดงผลอย่างไรในเบราว์เซอร์โบราณเช่น Mosaic

  2. เพิ่มการรองรับ DOM ให้กับเบราว์เซอร์ของคุณ มุ่งเน้นไปที่ W3C DOM ระดับ 1 และระดับ 2 ก่อนเนื่องจากเบราว์เซอร์ปัจจุบันเกือบทั้งหมดรองรับเบราว์เซอร์เหล่านี้อย่างสมบูรณ์ จากนั้นดูที่ระดับ 3 และระดับ 4 DOM เป็นพื้นฐานอย่างยิ่งสำหรับการเขียนโปรแกรมบนเว็บดังนั้นหากคุณกำลังจะสร้างเว็บเบราว์เซอร์ที่ทันสมัยการออกแบบทั้งหมดจะต้องคำนึงถึงสิ่งนี้ด้วย เนื่องจากคุณกำลังเขียนเบราว์เซอร์ใน C # คุณอาจต้องพิจารณาว่าคุณจะใช้ประโยชน์จากโมเดลอ็อบเจ็กต์. NET ที่มีอยู่ให้เป็นประโยชน์ได้อย่างไร

  3. ดูเครื่องมือการเขียนสคริปต์ที่มีอยู่และดูว่าคุณสามารถย้ายไปยังโครงการของคุณได้หรือไม่ ฉันไม่แนะนำให้คุณเขียนล่าม JavaScript ของคุณเองไม่ใช่เพียงเพราะเป็นโปรเจ็กต์ที่ใหญ่มากในตัวเอง แต่เนื่องจากมีงานมากมายในการเพิ่มประสิทธิภาพคอมไพเลอร์ JS (เช่น V8) ดังนั้นหากคุณไม่ได้เป็นกูรูด้านการออกแบบคอมไพเลอร์ล่าม JS ที่สร้างขึ้นด้วยมือของคุณอาจด้อยกว่าสิ่งที่มีอยู่แล้วแม้ว่าจะเป็นไปตามข้อกำหนด EMCAScript อย่างไม่มีที่ติ อีกครั้งฉันคิดว่าเอ็นจิ้นการเขียนสคริปต์ควรเป็นโมดูลที่แยกจากเบราว์เซอร์จริงโดยสิ้นเชิงดังนั้นฉันคิดว่ามันจะมีประโยชน์มากกว่าที่จะมีเฟรมเวิร์กที่ช่วยให้คุณสามารถแทนที่เอ็นจินการเขียนสคริปต์ใด ๆ แทนที่จะสร้างเอ็นจินการเขียนสคริปต์ ที่ใช้งานได้กับเบราว์เซอร์ของคุณเท่านั้น

  4. ดูซอร์สโค้ด HTML / CSS / JS สำหรับเว็บไซต์ 10-20 อันดับแรกในอเมริกาเหนือ (Google, Facebook, YouTube, Twitter, Wikipedia, Amazon, แพลตฟอร์มบล็อกยอดนิยม ฯลฯ ) และออกแบบเบราว์เซอร์ของคุณให้ทำงานได้ดีกับไซต์เหล่านี้ . นี่เป็นปัญหาที่ค่อนข้างแก้ไขได้ง่ายกว่าการสร้างเบราว์เซอร์ที่เป็นไปตามมาตรฐานที่มีอยู่ทั้งหมด (สิ่งที่เบราว์เซอร์ปัจจุบันยังทำได้ไม่สมบูรณ์) น้อยกว่าการสร้างเบราว์เซอร์ที่แสดงผลเว็บไซต์ทั้งหมดบนเว็บอย่างถูกต้อง (ไม่มีใครทำได้ ทำอย่างนั้น). ผู้คนจะบ่นว่าเบราว์เซอร์ของคุณละเมิดมาตรฐานและอื่น ๆ แต่นั่นไม่ใช่ปัญหาใหญ่เท่าที่มีคนบ่นว่าไม่สามารถเข้าถึง Google หรือ Facebook ด้วยเบราว์เซอร์ของคุณ ฉันไม่สามารถนึกถึงเบราว์เซอร์ใด ๆ ที่ปฏิบัติตามมาตรฐานทั้งหมด (หรือส่วนใหญ่) อย่างถูกต้องในรุ่นแรกดังนั้นฉันจึงบอกว่าไม่ต้องพยายามเลย


1
+1 สำหรับรหัสที่สุดของเว็บเบราว์เซอร์ในวันนี้ดูดอย่างน่ากลัวกับ boatloads ของมรดกอึขวาจากปี 1990 Google พยายามแก้ปัญหานี้ด้วยการสร้าง Blink ซึ่งโดยพื้นฐานแล้วWebkit จะลบอึ 8.8 ล้านบรรทัดออกไปแต่ถึงอย่างนั้นก็ยังมีอึที่ฝังแน่นที่ไม่สามารถเคลื่อนย้ายได้ติดอยู่ภายใน Blink
Pacerier

1
... หาก Google เริ่มสร้างเบราว์เซอร์ในวันนี้มันจะต้องสร้างตั้งแต่เริ่มต้นอย่างแน่นอนแต่ตอนนี้มันแพงเกินไปสำหรับพวกเขาที่จะเปลี่ยนไททานิคเพราะพนักงานทุกคนรู้จัก Blink แล้ว การเริ่มต้นใหม่ที่มีทักษะที่ลึกซึ้งและได้รับการสนับสนุนด้วยเงินเพื่อสร้างเบราว์เซอร์ - ระบบปฏิบัติการที่แข่งขันกันสามารถมีความได้เปรียบเหนือ Chrome
Pacerier

15

คุณหมายถึงการเขียนเอนจิ้นการเรนเดอร์ของคุณเองหรือเปล่า?

ฉันพูดได้แค่ว่าโชคดี หลายปีที่ผ่านมามนุษย์ได้เข้าสู่เบราว์เซอร์ที่หลากหลายในปัจจุบันหากคุณต้องการที่จะทำได้ดีกว่าตัวใดตัวหนึ่งคุณจะต้องมีทักษะที่จริงจัง หากคุณต้องถามว่าจะเริ่มจากตรงไหนคุณอาจต้องศึกษามากกว่าสองสามปีก่อนที่จะลองทำภารกิจดังกล่าว

ที่กล่าวว่านี่คือตัวชี้ (ชัดเจน) บางส่วน:

  1. เขียนจำนวนมากรหัสที่ไม่สิ่งเล็ก ๆ เช่นแก้projecteuler.netปัญหา
  2. เรียนรู้ทุกสิ่งที่คุณทำได้เกี่ยวกับชุดเครื่องมือและมาตรฐานชุมชน
  3. เขียนโค้ดอีกมากมาย
  4. รับความเข้าใจที่มั่นคงอย่างแท้จริงของเครื่องจักรที่มีสถานะ จำกัด
  5. เขียนโค้ดเพิ่มเติม
  6. เรียนรู้ทั้งหมดเกี่ยวกับ tcp / ip stack และวิธีใช้สำหรับ http
  7. เรียนรู้ทั้งหมดที่คุณสามารถทำได้เกี่ยวกับ http
  8. เรียนรู้มาตรฐาน (html, xml, sgml, css)
  9. ฉลองวันเกิดครบรอบ 150 ปีของคุณ
  10. เริ่มต้นโครงการเบราว์เซอร์จริง

แก้ไขด้านล่างที่นี่

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

ฉันเขียนโปรแกรมมานานกว่าสองในสามของชีวิตแล้วและฉันชอบคิดว่าฉันเป็นโปรแกรมเมอร์ที่ดีทีเดียว แต่ฉันคงโง่ที่คิดว่าฉันมีโอกาสครึ่งหนึ่งในการเขียนเว็บเบราว์เซอร์ที่ดีตั้งแต่เริ่มต้น .

แน่นอนว่าหากนี่คือสิ่งที่คุณต้องการทำอย่าปล่อยให้ความคิดเห็นของฉันขวางทางคุณ คุณอาจทำได้ดีกว่า Internet Explorer


12
ฉันควรจะพูดถึง: ถ้าคุณต้องการสร้างแอปเปิ้ลพายตั้งแต่เริ่มต้นคุณต้องเริ่มต้นด้วยการสร้างจักรวาล
Kris

@ Mk12: ขอบคุณจริงๆ ปรับปรุง
Kris

1
@Kris คุณสร้างจักรวาลได้อย่างไรเมื่อไม่มีอะไรจะสร้างขึ้นมาได้?
uSeRnAmEhAhAhAhAhA

1
@ user2645707: ฉันไม่รู้ฉันแค่ล้อเลียนคนที่ฉลาดกว่าฉัน quotationspage.com/quote/26980.html
Kris

12
+1 สำหรับ "คุณอาจทำได้ดีกว่า Internet Explorer"
Pulah Nandha

14

เป็นโครงการที่มีความทะเยอทะยานอย่างมาก (โดยเฉพาะสำหรับนักพัฒนารายเดียว) แต่สิ่งที่ฉันอยากจะทำในสักวันหนึ่งคุณจะได้เรียนรู้มากมายจากมัน

ฉันไม่รู้มากเกี่ยวกับวิธีการทำงานของโปรโตคอล (สิ่งที่คุณต้องค้นคว้าอย่างแน่นอน) หรือเกี่ยวกับสิ่งที่เกิดขึ้นในเบราว์เซอร์ แต่จุดเริ่มต้นที่ดีคือที่มาของเบราว์เซอร์โอเพนซอร์สซึ่งส่วนใหญ่เป็น Chrome และ Firefox Chrome เป็นโครงการที่ดีอย่างยิ่งในการพิจารณาเนื่องจากพวกเขาทำในสิ่งที่ฉันคาดหวังให้คุณเริ่มต้นด้วย Chrome และแบ็กเอนด์ของเบราว์เซอร์ ลืมการสร้างเอนจิ้นการเรนเดอร์ในตอนแรก - ใช้ Webkit หรือ Gekko


8

อย่างที่ใคร ๆ พูดไปแล้วเว็บเบราว์เซอร์เป็นโครงการขนาดใหญ่ คุณต้องกังวลเกี่ยวกับ tcp / ip & sockets การแสดงผล html การใช้ css การสร้างแบบจำลอง DOM การเรียกใช้จาวาสคริปต์การจัดการกับมาร์กอัปและโค้ดที่ผิดรูปแบบและการจัดการไฟล์ทุกประเภทก่อนที่คุณจะสามารถคิดถึงทุกสิ่งที่ผู้คนคาดหวัง เบราว์เซอร์ (เช่นบุ๊กมาร์กประวัติการท่องเว็บแบบส่วนตัวความปลอดภัย ฯลฯ ) เป็นโครงการขนาดใหญ่

ที่กล่าวมานั้นสามารถทำได้ ข้อเสนอแนะของฉันคือไปดูที่มาของ Firefox ฉันรู้ว่าคุณบอกว่าคุณต้องการสร้างเบราว์เซอร์ตั้งแต่เริ่มต้น แต่จะมีประโยชน์มากที่จะเรียนรู้จากโครงการโอเพนซอร์สก่อน

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

จากนั้นฉันจะเริ่มสร้างของตัวเอง ฉันจะนำความรู้ที่ได้รับจากการแยก Firefox ออกและนำไปสร้างเบราว์เซอร์ใหม่

ขอให้คุณโชคดี !


คุณสามารถระบุตัวชี้ว่าจะสลาย Firefox ได้อย่างไร? ฉันหมายความว่าฉันได้รับexeไฟล์เมื่อติดตั้งซึ่งฉันได้รับโฟลเดอร์ซอร์สที่มีdllไฟล์จำนวนมาก ฉันจะศึกษารหัสจริงที่ทำสิ่งนี้ได้อย่างไรและตรรกะที่อยู่เบื้องหลังสิ่งนี้
SexyBeast

ความคิดเห็นนี้จะสายไปที่พรรค แต่อย่างไรก็ตาม ไฟล์. EXE และ. DLL เป็นผลมาจากขั้นตอนการคอมไพล์และคุณไม่สามารถคาดหวังว่าจะเข้าใจมันมากนัก คุณจะต้องมีซอร์สโค้ด (C ++ และภาษาอื่น ๆ ในไฟล์ต่างกัน) เพื่อให้เข้าใจโปรแกรม โปรแกรมเมอร์จำเป็นต้องเข้าใจโปรแกรมของตัวเองดังนั้นพวกเขาจึงมักจะแยกและบันทึกส่วนการทำงานต่างๆของโค้ด
Roy Prins


4

คุณสามารถเริ่มต้นด้วย XHTML ที่มีรูปแบบดีและถูกต้องซึ่งน่าจะง่ายกว่าแท็กที่เบราว์เซอร์ของคุณจะพบใน "ชีวิต" จริง

จากนั้นคุณต้องหาวิธีที่จะทำให้ HTML จริงจากเว็บเป็นไปตามความต้องการของคุณ

แต่อย่าล้อเลียนตัวเอง: เบราว์เซอร์ไม่ใช่โครงการขนาดเล็ก


3

... จากนั้นเริ่มกังวลเกี่ยวกับความปลอดภัย

(โดยทั่วไปควรคำนึงถึงข้อกังวลเกี่ยวกับการไม่ใช้งานและการตัดข้ามก่อน :))


1

โครงการที่มีความทะเยอทะยานมาก แต่นักพัฒนารายหนึ่งไม่สามารถทำสิ่งนี้ได้โดยลำพังคุณต้องมีทีม (ผู้จัดการโครงการผู้ทดสอบ ... ) และบางทีคุณควรตรวจสอบตัวเลือกภาษา c # ที่ใช้งานได้บน windows เท่านั้น (ฉันรู้ว่าโมโนบน linux แต่ไม่ใช่ เหมือนกัน) อย่างไรก็ตามฉันขอให้คุณโชคดีและฉันยินดีที่จะใช้เบราว์เซอร์ของคุณ: D


0

คุณมีเวลาว่างอยู่ในมือจริงๆใช่ไหม? AFAIK เบราว์เซอร์ส่วนใหญ่เขียนด้วย C ++ ไม่ใช่ผู้ใช้ทุกคนที่ติดตั้ง. NET framework บนคอมพิวเตอร์และหากทำเช่นนั้นอาจไม่ใช่เวอร์ชันที่คุณต้องการ

อาจใช้เวลาหลายปี แต่อย่างไรก็ตามมีเบราว์เซอร์โอเพ่นซอร์สมากมายเช่น FireFox, Google Chrome .. ฯลฯ คุณสามารถเริ่มต้นด้วยการดูรหัสขอให้โชคดี :)


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