لا يحتوي JavaScript على دليل أسلوب ترميز موثوق ، ولكن بدلاً من ذلك هو بعض أنماط الترميز الشائعة:
نسخة الكود كما يلي:
دليل نمط جافا سكريبت من Google (يشار إليه فيما يلي باسم Google)
http://google-styleguide.googlecode.com/svn/trunk/javaScriptGuide.xml
نمط تشفير NPM (يشار إليه فيما يلي باسم NPM)
https://npmjs.org/doc/coding-style.html
دليل نمط Felix's Node.js (يشار إليه فيما يلي باسم Node.js)
http://nodeguide.com/style.html
JavaScript الاصطلاحية (المشار إليها فيما يلي باسم Idiomatic)
https://github.com/rwldrn/iiomatic.js/
دليل نمط jQuery JavaScript (يشار إليه فيما يلي باسم jQuery)
http://contribute.jquery.org/style-guide/js/
يعد Douglas Crockford أحد أكثر السلطات التقنية شهرة في مجال تطوير الويب وعضوًا في لجنة توحيد ECMA JavaScript 2.0 واحدة من أكثر السلطات التقنية شهرة في مجال تطوير الويب وعضو عضو في لجنة توحيد ECMA JavaScript 2.0 واحدة من أكثر السلطات التقنية شهرةً في مجال تطوير الويب ، وهي دليل
http://javaScript.crockford.com/code.html
بالطبع ، هناك أيضًا بعض خيارات الإعدادات الافتراضية في JavaScript Syntax Checkers JSlint و JShint. والسؤال هو ، ما هو نمط ترميز جافا سكريبت النهائي الذي يمكن لمعظم المطورين اتباعه؟ دعنا نجد بعض أنماط الإجماع من هذه الأدلة ذات النمط الست أدناه.
1. مقارنة نمط الكود
1.1 المسافة البادئة
مساحتان ، لم تعد مسافة بادئة ، لا يوجد مسافة بادئة لعلامة التبويب: Google ، NPM ، Node.js ، Idiomatic
علامة تبويب المسافة البادئة: jQuery
4 مسافات: كروكفورد
1.2 المسافات بين المعلمات والتعبيرات
استخدم الأنماط المدمجة: Google ، NPM ، Node.js
انسخ الرمز كما يلي: project.myclass = function (arg1 ، arg2) {
الكثير من الاستخدام للمساحات: الاصطلاحية ، jQuery
انسخ الرمز كما يلي: لـ (i = 0 ؛ i <length ؛ i ++) {
لا توجد تعليقات: كروكفورد
في معظم الأدلة ، يتم تذكير المطورين بعدم امتلاك أي مسافات في نهاية البيان.
1.3 طول خط الرمز
ما يصل إلى 80 حرفًا: Google ، NPM ، Node.js ، Crockford (عندما في كتلة رمز ، تسمح المسافات البادئة الأخرى باستثناء مساحتين بمعلمات الوظيفة أن تتوافق مع موضع معلمة الوظيفة الأولى. خيار آخر هو استخدام 4 مسافات للمسافة البادئة عند لف الخط بدلاً من 2.)
لا توجد تعليقات: jQuery ، Idiomatic
1.4 شبه كولون
استخدم دائمًا فاصلة فاصلة ، وليس الاعتماد على الإدراج الضمني: Google ، Node.js ، Crockford
لا تستخدم توقع: NPM في بعض الحالات
لا توجد تعليقات: jQuery ، Idiomatic
1.5 تعليقات
اتبع اتفاقيات JSDOC: Google ، Idiomatic
لا توجد تعليقات: NPM ، Node.js ، jQuery ، Crockford
1.6 اقتباسات
اقتباسات واحدة موصى بها: Google ، Node.js
اقتباسات مزدوجة: jQuery
لا توجد تعليقات: NPM ، Idiomatic ، Crockford
1.7 إعلان متغير
أعلن واحدة في وقت واحد دون استخدام الفواصل: node.js
نسخة الكود كما يلي:
var foo = "؛
var bar = "؛
أعلن متعددة في وقت واحد ، استخدم الفواصل للانفصال في نهاية السطر: jQuery الاصطلاحية
نسخة الكود كما يلي:
var foo = "" ،
BAR = "" ،
quux
استخدم الفاصلة في بداية السطر: NPM
لا توجد تعليقات: Google ، Crockford
1.8 الأقواس
استخدم أقواس الافتتاح على نفس الخط: Google ، NPM ، Node.js ، Idiomatic ، JQuery ، Crockford
انسخ الرمز كما يلي: وظيفة thisisblock () {
ينص دليل NPM على أنه يستخدم فقط الأقواس عندما تحتاج كتلة الكود إلى تضمين السطر التالي ، وإلا فلن يتم استخدامه.
1.9 المتغيرات العالمية
لا تستخدم المتغيرات العالمية: Google ، Crockford (تقول Google تقول أن تعارضات التسمية العالمية من الصعب تصحيحها ، وقد تواجه بعض المشكلات الصعبة عند دمج مشروعين. لتسهيل تبادل قانون JavaScript المشترك ، يجب إجراء المؤتمرات لتجنب النزاعات. يعتقد Crockford أنه لا ينبغي استخدام المتغيرات العالمية الضمنية.)
لا توجد تعليقات: Idiomatic ، jQuery ، NPM ، Node.js
2 تسمية نمط
2.1 تسمية متغير
الكلمة الأولى في البداية هي أحرف صغيرة ، والحرف الأول لجميع الكلمات بعد ذلك هو الكلمة الكبيرة: Google ، NPM ، Node.js ، Idiomatic
نسخة الكود كما يلي:
var foo = "" ؛
var fooname = "" ؛
2.2 تسمية ثابتة
استخدم رسائل رأس المال: Google ، NPM ، Node.js
نسخة الكود كما يلي: var cons = 'value' ؛
لا توجد تعليقات: jQuery ، Idiomatic ، Crockford
2.3 وظيفة تسمية
الكلمة الأولى في البداية هي أحرف صغيرة ، والحرف الأول لجميع الكلمات بعد ذلك هو الكلمة الكبيرة (الجمل): Google ، NPM ، Idiomatic ، Node.js (يوصى باستخدام أسماء الوظائف الوصفية الطويلة)
نسخة الكود كما يلي:
وظيفة جدا longoperationName
وظيفة قصيرة () ..
تسمية الوظيفة في شكل الكلمات الرئيسية:
نسخة الكود كما يلي:
وظيفة isReady ()
وظيفة setName ()
وظيفة getName ()
لا توجد تعليقات: jQuery ، Crockford
2.4 صفيف تسمية
استخدم الشكل الجمع: الاصطلاحي
نسخة الكود كما يلي: var documents = [] ؛
لا توجد تعليقات: Google ، JQuery ، NPM ، Node.js ، Crockford
2.5 كائن وتسمية فئة
استخدم النماذج التالية: Google ، NPM ، Node.js
نسخة الكود كما يلي:
var thisisObject = تاريخ جديد ؛
لا توجد تعليقات: jQuery ، Idiomatic ، Crockford
2.6 تسمية أخرى
استخدم All-Lower-Hyphen-CSS-Case لأسماء الملفات الطويلة ومفاتيح التكوين: NPM
3. قم بتكوين ملف .jshintrc وفقًا للنمط أعلاه
JSHINT (http://www.jshint.com/) هي أداة بناء جملة JavaScript وأداة فحص النمط التي يمكنك استخدامها لتذكير المشكلات المتعلقة بأسلوب الكود. يمكن دمجها بشكل جيد في العديد من المحررين شائع الاستخدام وهي أداة رائعة لتوحيد أنماط ترميز الفريق.
يمكنك عرض الخيارات المتاحة من خلال وثائق JShint: http://www.jshint.com/docs/#options
فيما يلي إنشاء ملف .jshintrc استنادًا إلى النمط الأول تحت كل فئة من الفئات المذكورة أعلاه. يمكنك وضعه في الدليل الجذر للمشروع ، وسيقوم محرر رمز JShint-Avare بتوحيد جميع أنماط التعليمات البرمجية في المشروع وفقًا له.
نسخة الكود كما يلي:
{
"Camelcase": True ،
"المسافة البادئة": 2 ،
"undef": صحيح ،
"quotmark": عزباء ،
"Maxlen": 80 ،
"الخلاف": صحيح ،
"مجعد": صحيح
}
بالإضافة إلى ذلك ، يجب عليك إضافة الرأس التالي إلى ملف JavaScript الخاص بك:
نسخة الكود كما يلي:
/ * JSHINT Browser: True ، jQuery: True */
في ملف node.js يجب أن تضيف:
نسخة الكود كما يلي:
/ *JShint Node: True */
يمكنك أيضًا إضافة العبارة التالية في ملفات JavaScript المختلفة:
نسخة الكود كما يلي:
"استخدام صارم" ؛
سيؤثر هذا على JShint ومحرك JavaScript الخاص بك وقد لا يكون متوافقًا للغاية ، لكن JavaScript ستعمل بشكل أسرع.
4. تنفيذ JShint تلقائيًا قبل ارتكاب Git
إذا كنت ترغب في التأكد من أن جميع رمز JS تتفق مع النمط المحدد في .jshintrc ، يمكنك إضافة ما يلي إلى ملف .git/hooks/pre-commit ، وسيتم إجراء فحص النمط تلقائيًا عند محاولة إرسال أي ملفات معدلة حديثًا إلى المشروع.
نسخة الكود كما يلي:
#!/بن/باش
# خطاف GIT قبل الالتزام لتشغيل JShint على ملفات JavaScript.
#
# إذا كان عليك الالتزام على الإطلاق دون اختبار ،
# استخدام: GIT الالتزام-لا تحدد
أسماء الملفات = ($ (GIT Diff-رأس-رأس فقط)))
أي jshint &> /dev /null
إذا [$؟ -ne 0] ؛
ثم
صدى "خطأ: JShint لم يتم العثور عليه"
صدى "تثبيت مع: Sudo NPM Install -G Jshint"
الخروج 1
Fi
لأني في "$ {fildenames [@]}"
يفعل
إذا [[$ i = ~ /.js$]] ؛
ثم
صدى jshint $ i
jshint $ i
إذا [$؟ -ne 0] ؛
ثم
الخروج 1
Fi
Fi
منتهي