npm i biti -g
️ تم إهمال هذا الريبو لصالح @rola/static ومشروع Rola.
biti watch pages/ static/
biti
بسيط جدا. تعمل على دليل واحد من الصفحات ، والتي يحدد كل منها وتصدير الخصائص والأساليب التي يستخدمها biti
لتقديم الصفحة.
بالنسبة للأمثلة هنا ، سنستخدم /pages
كدليل صفحاتنا ، ولكن يمكنك تسميته أي شيء.
تتطلب كل صفحة الصادرات التالية:
pathname
- String - المسار الذي ترغب في ظهور الصفحةview
- وظيفة - وظيفة تُرجع مكون رد الفعل سيتم تمرير خاصية اسم المسار إلى مكون view
.
قد تبدو صفحة بسيطة هكذا:
import React from 'react'
export const pathname = '/about'
export function view ( { pathname } ) {
return (
< >
< h1 > About Us </ h1 >
< p > ... </ p >
</ >
)
}
يمكن للصفحات أيضًا تصدير كائن state
، والذي سيتم نقله أيضًا إلى وظيفة view
عند التقديم.
import React from 'react'
export const pathname = '/about'
export const state = {
title : 'About Us' ,
description : '...'
}
export function view ( { state , pathname } ) {
return (
< >
< h1 > { state . title } </ h1 >
< p > { state . description } </ p >
</ >
)
}
يمكن أن تحدد المسارات التي تتطلب بيانات أو تلك التي تحتاج إلى خصائص ديناميكية وظيفة config
التي تُرجع تكوين صفحة تحتوي على نفس الخصائص المذكورة أعلاه.
سيتم دمج هذه القيم بعمق مع أي صادرات ثابتة تم توفيرها.
import React from 'react'
import { getAboutPage } from './lib/api.js'
export const pathname = '/about'
export const state = {
title : 'About Us' ,
team : [
'Eric'
]
}
export function config ( ) {
return getAboutPage ( )
. then ( res => {
return {
state : {
team : res . team
}
}
} )
}
export function view ( { state , pathname } ) {
return (
< >
< h1 > { state . title } </ h1 >
< h2 > Team </ h2 >
{ state . team . map ( name => (
< p key = { name } > { name } </ p >
) ) }
</ >
)
}
بالنسبة للصفحات التوليدية والترقيم ، يمكن أن تقوم وظيفة config
أيضًا بإرجاع مجموعة من تكوينات الصفحة . يجب أن تحدد كل من هذه التكوينات pathname
الخاص بها ، بحيث يتم تقديم كل صفحة بشكل منفصل.
سيقوم المثال التالي بإنشاء صفحة لكل منشور يتم إرجاعه من getBlogPosts
:
import React from 'react'
import { getBlogPosts } from './lib/api.js'
export function config ( ) {
return getBlogPosts ( )
. then ( posts => {
return posts . map ( post => ( {
pathname : `/posts/ ${ post . slug } ` ,
state : {
title : post . title ,
content : post . content
}
} ) )
} )
}
export function view ( { state , pathname } ) {
return (
< >
< h1 > { state . title } </ h1 >
< article >
{ state . content }
</ article >
</ >
)
}
يدعم biti
الحد الأدنى من التكوين ، ويعود إلى الافتراضات الذكية. لتحديد تكوين لجميع مهام التقديم ، يمكنك إنشاء ملف biti.config.js
.
يدعم biti
الخصائص التالية في ملف التكوين:
env
- كائن - سيتم إرفاق خصائص على هذا الكائن process.env
.alias
- الكائن - الاسم المستعار استيراد الوحدة النمطيةمثال:
module . exports = {
env : {
API_KEY : 'abcdefg'
} ,
alias : {
components : './src/components'
}
}
بشكل افتراضي ، يعرّف biti
@
مستعار واحد يشير إلى process.cwd()
. يمكنك استخدامه عبر القوالب الخاصة بك مثل هذا:
import Component from '@/src/components/Component.js'
لدى biti
فقط أوامر: render
watch
.
كلاهما يتبع نفس النمط:
biti < command > < src > < dest >
على سبيل المثال:
biti render /pages /static
تقبل هذه الأوامر أيضًا Globs كخاصية src
، مما يتيح لك تحديد الصفحات أو الدلائل الفردية.
biti render /pages/about-us.js /static
biti render /pages/ * .js /static
biti render /pages/marketing-site/ * .js /static
biti render /pages/ ** / * .js /static
يعد استخدام biti
برمجيًا نفس الشيء مثل استخدام CLI ، فقط ستحتاج إلى تمرير كائن التكوين يدويًا.
const biti = require ( 'biti' )
const config = {
env : { ... } ,
alias : { ... }
}
const app = biti ( config )
كلاهما render
watch
التوقيع التالي:
app . render ( src , dest )
يجعل جميع الصفحات من src
dest
.
app . render ( '/src' , '/static' )
يشاهد جميع الصفحات في src
ويقوم بإعداد dest
في تغيير الملف.
app . watch ( '/src' , '/static' )
مثيل biti
ينبعث بعض الأحداث المفيدة أيضًا.
بعد تقديم صفحة واحدة.
app . on ( 'render' , page => { } )
بعد تقديم جميع الصفحات. عند مشاهدة هذا يسمى بعد أن تم تجميع كل تغيير وتقديمه.
app . on ( 'rendered' , pages => { } )
app . on ( 'error' , error => { } )
رخصة معهد ماساتشوستس للتكنولوجيا © إريك بيلي