قالب موقع ويب للويب الحديث.
تجربة المطور القوية تلبي المخرجات خفيفة الوزن.
إنشاء موقع ثابت بسهولة وبمرونة
هل تشعر بالإرهاق من مشهد مولد الموقع الثابت؟ يقدم Refo أسلوبًا بسيطًا وقابلاً للتخصيص ومبنيًا بالكامل على Node.js.
على عكس Jekyll وGatsby وAstro وغيرهم، نسمح لك بالاستفادة من قوة وحدات Node.js مباشرة. هذا يعني أنه يمكنك إنشاء أي نوع من مواقع الويب التي يمكنك تخيلها، كل ذلك مع مرونة مكتبات وخوادم Node.js المفضلة لديك.
الفوائد الرئيسية:
SVG ، واستخدم الواردات raw ، وقم style مكوناتك بسهولة.تجاوز حدود مولدات المواقع الثابتة التقليدية. احتضن قوة ومرونة Refo لمشروعك القادم!
️ نجمة لدعم عملنا!
احصل على إشعارات حول الإصدارات الجديدة عبر رسائل البريد الإلكتروني.
rawa ، b ، c ، ...، aa ، ab ، ...)development باستخدام أداة تتبع المكدسMarkdown للسلاسل في ملفات JSON باستخدام تخفيض السعرPDF باستخدام JSON .PDF أو document HTML أو كصفحة على موقع ويب.HTML و CSS .PDF واحد أو أكثر يدعم تنسيقات مختلفة مثل Letter و A4 .PDF بعد حفظ التغييرات لرؤية PDF المحدث. تثبيت التبعيات:
pnpm install
هل أنت على نوع من النظام القائم على يونكس؟ ماك؟ لينكس؟ إذا كان الأمر كذلك، فقد ترغب في تغيير
portفي وحدةindex، والتي تم ضبطها على80والتي تعمل على نظام التشغيل Windows. الرقم الافتراضي لـ Superstatic هو3474لذا يمكنك إزالته إذا كنت تفضل ذلك.
ابدأ الخادم في وضع التطوير:
pnpm dev
تفضل بزيارة http://localhost/ للوصول إلى الموقع.
إنشاء موقع ثابت:
pnpm static افتح ملف index.html داخل المجلد static للوصول إلى موقع الويب.
import | الملف الذي تم إنشاؤه | |
|---|---|---|
| فِهرِس/ | static / | |
• الرمز المفضل .ico ( file الرمز (وحدة Node.js)) | • الأيقونة المفضلة .ico | |
• main .js .js ( module Node.js) | → | • الرئيسية .js |
• فهرس .html .jsx ( module Node.js) | • فهرس .html | |
firebase .json .js ( module Node.js) | فايربيباس .json |
تقوم
fileالمستوردة (التي لها امتداد ملف معين (ico,png)) (Node.js)) بنسخ الملفات نفسها إلى المجلدstaticعند تحميل الوحدات. في وضع إعادة ربط الوحدة، يقومون بإزالتها إذا لم يتم استيرادها بعد الآن.
تتم كتابة
exportdefaultmodule(Node.js) (التي لها امتداد ملف معين (js،json،html) في اسم الملف الأساسي الخاص بها) كمحتويات ملفات الإخراج (في المجلدstatic). أسماء الملفات الكاملة لملفات الإخراج هي أسماء الملفات الأساسيةmodule(Node.js).
️ نجمة لدعم عملنا!
فهرس .html .jsx ( module import التحرير):
import template from '#@SolidJS/template'
import use from '#@style'
const [ { styled } , extract ] = use ( )
const Body = styled . body `
font-weight: bold;
`
export default < >
{ template ( `<!DOCTYPE HTML>` ) }
< html lang = "en" >
{ template ( `<head>` ) }
< style > { extract ( ) } </ style >
{ template ( `</head>` ) }
< Body >
example content
</ Body >
</ html >
</ > فهرس .html (الملف الذي تم إنشاؤه):
<!DOCTYPE HTML > < html lang = en > < head > < style > .a{font-weight:700} </ style > </ head > < body class = a > example content </ body > </ html > يمكنك نشر مجلد docs الثابتة كما هو.
قد ترغب في تغيير prefixum في الملفات التالية وفقًا لاسم مستودع project site الخاص بك: index/index/site/ main/
index/resume/index/index يمكنك إزالة prefixum بالكامل في حالة قيامك بنشر user or an organization site .
prefixum من الملفات المذكورة أعلاه ضمن نشر صفحات GitHub..firebaserc بمعرف مشروع Firebase الخاص بك: {
"projects" : {
"default" : " <projectId> "
}
}انشر موقعك على استضافة Firebase:
pnpm deploy
قد يكون من المفيد فصل قالب السيرة الذاتية ونشره كحزمة Refo جديدة.
افتح موضوعًا جديدًا إذا كنت تعتقد ذلك ودعنا نناقش هذا الأمر. يمكننا بالتأكيد تنفيذ هذا إذا تبين أنه مفيد.
يستخدم هذا المثال معالج Refo JSON. لذلك يمكنك التحكم في كيفية عرض خصائص معينة وما إذا كان سيتم عرضها من ملف Index/index/site/index/resume/data.js كما هو موضح في ملف Refo التمهيدي في قسم استخدام معالج JSON.
يستخدم هذا المشروع superstatic لخدمة الملفات الثابتة التي تم إنشاؤها. يمكنك استخدام أي مكتبة مماثلة لخدمة الملفات أو عدم وجود مكتبة على الإطلاق في حالة رغبتك في تصفح الملفات مباشرة. يمكن أن يكون هذا مفيدًا للوثائق غير المتصلة بالإنترنت على سبيل المثال.
يمكنك إزالة superstatic واستخدام أدوات firebase بدلاً من ذلك (والتي تستخدم superstatic) إذا كنت تفضل ذلك. في هذه الحالة، يمكنك تعديل scripts في ملف package.json واستبدال superstatic بأوامر firebase serve .
يستخدم هذا المشروع بشكل متزامن لتشغيل Refo في وضع المراقبة وخدمة الملفات بثبات فائق. يمكنك استخدام أي مكتبة مشابهة مثل npm-run-all لتشغيل Refo وخادم بالتوازي أو عدم وجود مكتبة على الإطلاق إذا لم تكن بحاجة إلى خادم ملفات.
يمكن تسمية الملف firebase.json باسم superstatic.json إذا كنت تفضل ذلك. لا يعتمد هذا القالب على Firebase نفسه. ومع ذلك، فهي توفر أحد حلول الاستضافة الثابتة، إن لم تكن الأسرع دائمًا.
يتم استخدام القيم الحرفية لقالب JavaScript لصياغة مستندات HTML.
يستخدم هذا المثال أيضًا العلامات الشائعة في قوالب معينة مما يسمح باستخدام بناء جملة أقصر في كثير من الحالات.
فيما يلي بعض السيناريوهات الشائعة الاستخدام في هذا المثال:
افتراضيًا، يمكنك عرض قيمة اختيارية واستخدام عامل شرطي لمنع عرض قيم خاطئة مثل undefined على سبيل المثال:
module . exports = `
${ item ? item : '' }
`تقوم العلامات المشتركة بهذا نيابةً عنك. لذلك يمكنك استخدام بناء جملة أقصر مع قالب حرفي ذو علامات:
const { html } = require ( 'common-tags' )
module . exports = html `
${ item }
` افتراضيًا، يمكنك عرض جزء قالب اختياري واستخدام عامل شرطي لمنع عرض قيم خاطئة مثل undefined على سبيل المثال:
module . exports = `
${ item ? `
<div>
` + item + `
</div>
` : '' }
`باستخدام العلامات المشتركة، يمكنك استخدام شرط بسيط مع عامل تشغيل منطقي لتحقيق نفس الشيء:
const { html } = require ( 'common-tags' )
module . exports = html `
${ item && `
<div>
` + item + `
</div>
` }
` افتراضيًا، يمكنك join النتيجة عند المرور عبر مصفوفة من العناصر لمنع عرض الفواصل بين العناصر التي تم إرجاعها:
module . exports = `<section>
${ items . map ( item => `
<div>
${ item }
</div>
` ) . join ( '' ) }
</section>`تقوم العلامات المشتركة بهذا نيابةً عنك. لذلك يمكنك استخدام بناء جملة أقصر:
const { html } = require ( 'common-tags' )
module . exports = html ` < section >
${ items . map ( item => `
<div>
${ item }
</div>
` ) }
</ section > ` عندما لا تستخدم قالبًا حرفيًا بعلامات مميزة أو مع مكتبة مشابهة، فيمكنك ربط أجزاء القالب باستخدام عامل التشغيل + إذا كنت تفضل ذلك:
module . exports = `
<div>
` + item + `
</div>
` أو يمكنك استخدام عنصر نائب مع بناء جملة ${expression} بدلاً من ذلك:
module . exports = `
<div>
${ item }
</div>
`في بعض الحالات، يمكن أن يكون أحد هذين الأسلوبين أسهل في القراءة من الآخر، لذا يمكنك استخدام النمط وفقًا للسياق أو يمكنك اختيار أحدهما على الآخر والبقاء متسقًا. يستخدم هذا المثال كليهما.
على سبيل المثال، تقوم بعض برامج تحرير الأكواد مثل Atom وGitHub بتمييز القيم الحرفية للنماذج ذات علامات html على أنها HTML كما ترون هذا أعلاه أيضًا.
Preferencies / Package Settings / JS Custom / Settings .JS Custom.sublime-settings — User : {
"configurations" : {
"jsx" : true
, "custom_templates" : {
"styled_components" : true
, "lookaheads" : {
" \ <" : " scope:text.html.basic "
, " \ .|height|padding|margin" : " scope:source.js.css "
, "import|minify|await|export|if|window| \ (|," : " scope:source.js "
}
, "tags" : {
"injectGlobal" : " scope:source.js.css "
, "css" : " scope:source.js.css "
, "html" : " scope:text.html.basic "
}
}
}
} يمكنك الآن استخدام خيار تمييز بناء الجملة JS Custom - Default لملفات JavaScript.
معالج JSON عبارة عن حزمة مستقلة. من المفيد بشكل أساسي التعامل مع البيانات المتعلقة بالسيرة الذاتية، ولكن يمكنك استخدامها لأي شيء آخر أيضًا.
يمكنك استخدامه كما ترى في المثال (asset/resume/getHandledJson.js) أيضًا:
const handleJSON = require ( 'refo-handle-json' )
var json = JSON . parse ( JSON . stringify ( require ( './data' ) ) )
json = handleJSON ( json ) يوصى بإنشاء نسخة من JSON المطلوب باستخدام وظائف JSON.parse(JSON.stringify(json)) على سبيل المثال عند استخدام Refo في وضع watch (تعليق ذو صلة)، لأن معالج JSON يقوم بتغيير خصائص الكائن.
يقوم معالج JSON بتحليل قيم كائنات السلسلة كـ Markdown باستخدام markdown-it. مثال: example/asset/resume/data.json#L7
الخصائص التي تنتهي بـ -private هي تمت إزالته . مثال: example/asset/resume/data.json#L4
تتم أيضًا إزالة الكائنات التي لها خاصية تسمى private .
يتم تضمين الخصائص التي تنتهي بـ -full فقط عند تمرير معلمة قيمة حقيقية ثانية إلى وظيفة المعالج. مثال: example/asset/resume/data.json#L8، example/asset/resume/getHandledJson.js#L9
يتم تضمين الكائنات التي لها خاصية مسماة full فقط عند تمرير معلمة قيمة حقيقية ثانية إلى وظيفة المعالج.
عندما يحتوي كائن على خاصية startDate بدون خاصية endDate ، فيمكن استخدام خاصية hidePresent لإخفاء تسمية موجودة وإظهار السنة الحالية بدلاً من ذلك.
يمكن استخدام الخاصية hideEndDate لإخفاء السنة الحالية المعروضة بدلاً من التسمية الحالية.
يمكن استخدام خاصية hideDuration لإخفاء المدة المحسوبة. بخلاف ذلك، يتم تحديد خاصية duration بالمدة المحسوبة (أمثلة: 7 أشهر، سنة واحدة، 1.5 سنة، سنتان).
قد يكون من المفيد إنشاء وثائق متعمقة حول كل حزمة Refo.
افتح موضوعًا جديدًا إذا كنت تعتقد ذلك ودعنا نناقش هذا الأمر. يمكننا بالتأكيد تنفيذ هذا إذا تبين أنه مفيد.
أقترح تغيير الملف لإضافة مشروعك هنا.
Re sume + port fo lio = Refo