เครื่องยนต์กิ่งไม้ชั้นหนึ่งสำหรับ node.js
เราเชื่อว่าเครื่องยนต์กิ่งไม้ชั้นหนึ่งควรจะสามารถแสดงเทมเพลตใด ๆ ให้เป็นผลลัพธ์ที่แน่นอนเช่นเดียวกับเครื่องยนต์ PHP อย่างเป็นทางการ นั่นหมายความว่าควรใช้ 100% ของไวยากรณ์ที่กำหนดโดยข้อกำหนดภาษาและควรทำให้ไวยากรณ์นั้นโดยใช้ตรรกะ PHP
นอกจากนี้เรายังเชื่อว่าเอ็นจิ้น Twig ชั้นหนึ่งควรจะสามารถติดตามได้อย่างง่ายดายเมื่อข้อกำหนดของกิ่งไม้พัฒนาขึ้น สถาปัตยกรรมรหัสและปรัชญาของมันควรจะใกล้เคียงที่สุดเท่าที่จะเป็นไปได้ที่สุดเท่าที่จะเป็นไปได้เช่นเดียวกับการใช้งาน PHP
ในที่สุดเราเชื่อว่าเอ็นจิ้น Twig ชั้นหนึ่งควรอนุญาตให้ผู้ใช้สร้างประสบการณ์ของพวกเขาด้วย twigphp และได้รับการสนับสนุนจากชุมชนขนาดใหญ่ที่มาพร้อมกับมัน
นั่นคือสิ่งที่ twing คือ เอ็นจิ้นการบำรุงรักษาครั้งแรกที่ผ่านการทดสอบการรวม TwigPHP 100% นั้นใกล้เคียงที่สุดกับโครงสร้างรหัสและเปิดเผย API ที่เป็นไปได้อย่างใกล้ชิด
Twing ต้องการอย่างน้อย node.js 8.0.0 ในการทำงาน
วิธีที่แนะนำในการติดตั้ง twing คือ NPM:
npm install twing --save
const {twingenvironment, twingloaderarray} = ต้องการ ('twing'); ให้ตัวโหลด = ใหม่ twingloaderarray ({'index.twig': 'สวัสดี {{name}}!'}); ให้ twing = new twingenvironment render ('index.twig', {ชื่อ: 'fabien'}) จากนั้น ((เอาต์พุต) => {// ทำอะไรกับเอาต์พุต});
Twing และ Express ทำงานได้ค่อนข้างดี ดูเอกสารสำหรับตัวอย่างการใช้งานด้วย Express
เริ่มต้นด้วยเวอร์ชัน 2.0.0 สามารถใช้ twing ในเว็บเบราว์เซอร์ที่มีการประนีประนอมน้อยมาก ส่วนประกอบของระบบไฟล์นั้นไม่สามารถใช้ได้อย่างชัดเจน (คือ Loader ระบบไฟล์และแคช) แต่ทุกอย่างได้รับการสนับสนุนอย่างเต็มที่
Bundlers โมดูลจะคว้ารสชาติเฉพาะของเบราว์เซอร์โดยอัตโนมัติเมื่อนำเข้าโมดูล Twing const {TwingEnvironment} = require('twing');
หรือ import {TwingEnvironment} from 'twing';
จะทำงานในทั้ง node.js และเบราว์เซอร์ - เมื่อรวมเข้ากับกรณีหลัง
ใช้ JSDELIVR CDN เพื่อรวม TWING ในเอกสาร HTML ของคุณ:
<script src="https://cdn.jsdelivr.net/npm/twing/dist/lib.min.js"></script>
เมื่อโหลดโดยเบราว์เซอร์แล้ว TWING สามารถใช้ได้ภายใต้ตัวแปร Twing
ทั่วโลก
Twing มีจุดมุ่งหมายในการใช้ข้อกำหนดของกิ่งไม้อย่างสมบูรณ์แบบโดยไม่ประนีประนอม นี่ไม่ใช่เรื่องง่ายเนื่องจากลักษณะของข้อกำหนดของ Twig: พวกเขาไม่มีอยู่อย่างเป็นทางการและสามารถอนุมานได้จากเอกสารสาธารณะเอกสารซอร์สโค้ดและชุดทดสอบของการใช้งานอ้างอิง PHP บางครั้งมันก็เกิดขึ้นว่าสิ่งที่ไม่ได้เป็นส่วนหนึ่งของเอกสารหรือชุดทดสอบก็กลายเป็นส่วนหนึ่งของข้อกำหนดเช่นแท็ก filter
หรือปัญหาการทำงานใหม่ของแมโคร ด้วยการเปลี่ยนแปลงที่อาจเกิดขึ้น เนื่องจากทีมงานของ Twig ไม่ได้วางแผนที่จะปล่อยข้อกำหนดอย่างเป็นทางการสำหรับภาษาเราจึงไม่สามารถคาดหวังได้ว่าปัญหาจะได้รับการแก้ไขได้ตลอดเวลาในไม่ช้า
กลยุทธ์ของ Twing ที่นี่คือการยึดกฎการกำหนดเวอร์ชันแบบความหมายอย่างเคร่งครัดและ ไม่เคย แนะนำการเปลี่ยนแปลงที่แตกหักเป็นรุ่นรอง - ชุดทดสอบที่กว้างขวางพร้อมการครอบคลุมรหัส 100% รับประกันว่า ความผิดพลาดของทีม Twig จะได้รับการจัดการโดยการออกปัญหาที่รู้จักหากความผิดพลาดนั้นเป็นเรื่องเล็กน้อยหรือชนกับเวอร์ชันหลักใหม่หากไม่ใช่
นี่คือแผนภูมิความเข้ากันได้ระหว่างระดับข้อมูลจำเพาะของ TWING และ TWIG รุ่นเล็ก ๆ พร้อมกับสรุปคุณสมบัติที่โดดเด่นที่จัดทำโดยแต่ละระดับข้อกำหนดของ TWIG โปรดทราบว่า Twig Minor Version ไม่ได้ให้คุณสมบัติที่เกี่ยวข้องกับภาษาใหม่เสมอไป (เนื่องจากทีมของ Twig ทำให้เกิดความสับสนระหว่าง Twig และการใช้งานอ้างอิง Twigphp)
Twing Version | ระดับข้อกำหนดของกิ่งไม้ | คุณสมบัติที่โดดเด่น |
---|---|---|
3.0 | 2.11 | การกำหนดขอบเขตของมาโคร |
2.3 | 2.10 | spaceless column filter map และ reduce ตัวกรอง apply แท็ก, line whitespace trimming ช่องว่างควบคุมช่องว่าง |
2.2 | 2.6 | แท็ก deprecated |
1.3 | 2.5 | การเสียค่าเสื่อมราคา spaceless และ block |
1.0 | 2.4 |
ขอแนะนำอย่างยิ่งให้ใช้ Twing เวอร์ชันล่าสุดที่มีอยู่เสมอเนื่องจากการแก้ไขข้อผิดพลาดจะกำหนดเป้าหมายเวอร์ชันล่าสุดเสมอ
คุณสามารถค้นหารายการของปัญหาที่รู้จักของ TWING เกี่ยวกับการใช้งานข้อกำหนดของ Twig ได้ที่นี่ โปรดทราบว่าปัญหาที่ทราบนั้นรับประกันได้ว่าจะได้รับการแก้ไขในรุ่นสำคัญต่อไปของ Twing
อ่านเอกสารสำหรับข้อมูลเพิ่มเติม
Gulp-Twing: คอมไพล์เทมเพลตกิ่งด้วยอึก สร้างเมื่อ twing
Twing-Loader: Webpack Loader ที่รวบรวมเทมเพลต Twig โดยใช้ Twing
แยกที่เก็บนี้
รหัส
ใช้การทดสอบโดยใช้เทป
ออกคำขอดึงโปรดจำไว้ว่าคำขอดึงทั้งหมดจะต้องอ้างอิงปัญหาในคิวปัญหา
ลิขสิทธิ์© 2018 Eric Morand ปล่อยภายใต้ใบอนุญาต BSD 2 ข้อ