البدء السريع لمشروع الويب (BE - Java Spring ، FE - React Redux ، التفاعل - الراحة ، WebSocket)



البدء السريع للمشروع على React

رابط لمشروع في جيت


من أجل تطوير تطبيق ويب حديث ، تحتاج إلى مهارات في إنشاء جانب الخادم والعميل. التركيبة الأكثر شيوعًا مؤخرًا في بيئة الشركة هي Java باستخدام Spring Framework للخادم و React للعميل. ومع ذلك ، ليس لدى جميع المطورين مهارات تكديس كاملة (معرفة كل من جانب الخادم والعميل) ، وبداية للمطورين ، يعد إنشاء مثل هذا التكوين مهمة مستحيلة تمامًا.

لذا ، إليك حل جاهز يسمح لك بتعلم كيفية إنشاء مثل هذه التكوينات ، بالإضافة إلى توفير الوقت عند بدء مشروع جديد.

دعونا نلقي نظرة فاحصة على التقنيات المستخدمة.


جانب الخادم:


بناء المشروع - الصف 4.8.1 (مكون إضافي اختياري - عقدة التدرج للتجميع الأمامي)
اللغة - Java 1.8 (أو أحدث)
الإطار - Spring 5.x
قاعدة البيانات - HSQL 2.3.1 (ستكون كافية بالنسبة للمبتدئين)

جانب العميل:


بناء المشروع - حزمة الويب 4.17.2
اللغة - JS6
الإطار - تفاعل 16.4.0 ، redux 3.7.2 ، bootstrap (reastrap 6.3.1)
إذا كان كل شيء يناسبك ، فيمكنك الاستمرار.

إطلاق المشروع


أعتقد أنه سيكون أكثر متعة إذا بدأنا كل شيء أولاً وتأكدنا من أن كل شيء يعمل!
يمكنك تنزيل المشروع من هنا.

يستغرق إطلاقها وقتًا طويلاً وصبرًا. الشيء الرئيسي هو القيام بكل شيء بالترتيب:
معلومات تثبيت أكثر تفصيلاً (بناءً على طلب القراء) في أسفل المقالة


  1. تثبيت java 1.8 (لا تنس تسجيل JAVA_HOME)
  2. قم بتثبيت node.js
  3. افتح سطر الأوامر (آمل أن تعرف بنفسك كيفية القيام بذلك في نظام التشغيل الخاص بك)
  4. انتقل إلى مجلد المشروع (على سبيل المثال cd C: \ Git \ response-start )
  5. قم بتشغيل الأمر npm i (سيقوم هذا الأمر بتنزيل كل العناصر التابعة للواجهة الأمامية ووضعها في مجلد node_modules)
  6. قم بتشغيل أمر gradle build ( سيجمع هذا الأمر مشروعك ويضع كل شيء في مجلد البناء)
  7. قم بتشغيل الأمر gradle bootRun (مشروعك قيد التشغيل الآن)
  8. يبقى فقط لمتابعة الرابط والاستمتاع بالنتيجة.

يجب أن ترى شيئًا مثل هذا:



الدخول


مهمتي الرئيسية في هذه المقالة هي إظهار هيكل المشروع. لذلك ، سأكون في الأساس متاحًا قدر الإمكان لمعرفة أي ملف في المشروع مسؤول عما يحدث مع بعض عمليات البحث الغنائية. بالنسبة للمطورين الخلفيين ، سيكون جانب العميل مثيرًا للاهتمام والعكس بالعكس.

هيكل المشروع


إذا أمكن ، حاولت إزالة كل شيء غير ضروري من المشروع ، ثم ما ينمو أي مشروع مع مرور الوقت ، ولكن يخيف المطورين المبتدئين.

للبدء ، دعنا نلقي نظرة على الملفات الموجودة في مشروعنا وسبب الحاجة إليها. لنقم بتقسيمها مرة أخرى للغرض المقصود من الخادم والعميل.

الخادم:


build.gradle - الملف الرئيسي لبناء مشروعنا. فهو يصف جميع التبعيات التي نحتاجها ويربط المستودع أين نحصل عليها. وأيضًا تم تسجيل المكوّن الإضافي graded-node-plugin الذي يجمع عند تجميع جزء الخادم تلقائيًا الواجهة الأمامية ، وهي بلا شك مريحة جدًا.

gradlew و gradlew.bat ومجلد gradle هما جزءان ضروريان لتشغيل المجمع. بالمناسبة ، إذا فشل أمر بناء التدرج لسبب ما ، فقد تحتاج إلى تثبيت التدرج. يمكن القيام بذلك باستخدام التعليمات الرسمية .

README.md - ملف عالمي لعرض معلومات المشروع في المستودع.

في المجلد src / main / webapp / WEB-INF / ، يوجد ملفان jboss-web.xml و web.xml غير مستخدمين للعمل المحلي ، ولكن إذا كنت بحاجة إلى تشغيل المشروع على خوادم الويب مثل WildFly ، فستكون هناك حاجة إليها.

application.yml ليس ملفًا غير مهم أيضًا. يصف تكوين الربيع. على وجه الخصوص ، هناك منفذ: 8090 - المنفذ الذي سيتم تشغيل التطبيق عليه وإعدادات الاتصال بقاعدة البيانات.

إذا كنت تتحدث بالفعل عن قواعد البيانات ، فإن المشروع يستخدم HSQL - وهي قاعدة بيانات ملف جافا. عند بدء المشروع ، سيتم إنشاء db / folder في مجلد المستخدم حيث سيتم تخزين قاعدة البيانات نفسها. يمكنك استخدام أي قاعدة بيانات تفضلها ، على سبيل المثال Postgress ، لا توجد قيود أساسية على ذلك.

يوجد الرمز الجانبي للخادم نفسه في المجلد src / main / java.

الزبون:


.babelrc - يتم تخزين جميع تكوينات بابل هنا. بالنسبة لأولئك الذين لا يعرفون بابل ، هذا شيء يحول جميع أنواع الأشياء الجديدة في تطوير الواجهة الأمامية ، مثل JS6 ، JS7 ، JSX ، إلى شبيبة عادية. في هذا الملف ، على سبيل المثال ، لدي "plugins" للمكون الإضافي متصل: ["convert-decorators-legacy"] والذي يسمح لك باستخدام الديكور - إنه مثل @ annotation في java. لم أستخدمهم ، ولكن يمكنك ذلك. لهذا ، تم التحقق من كل شيء بالفعل ، وتحققت.

.npmrc - رابط إلى مستودع التبعيات شبيبة.

package.json - ملف مهم جدًا هنا هو وصف لتطبيقنا بالكامل وروابط إلى تبعيات js وأوامر لبناء وتشغيل جزء العميل. علاوة على ذلك ، تنقسم التبعيات إلى قسمين: التبعيات - التبعيات اللازمة للتطبيق نفسه للعمل و devDependencies - التبعيات اللازمة فقط لبناء المشروع. يصف قسم البرامج النصية أوامر buils وأوامر البدء التي يتم استخدامها لبدء الجزء الأمامي فقط من المشروع ، على سبيل المثال ، يمكن بدء الواجهة باستخدام الأمر npm run start (سيبدأ على المنفذ 9090). في الواقع ، هذا الملف هو تناظري لـ build.gradle لجانب العميل.

webpack.config.babel.js - الملف الأكثر أهمية في التكوين بأكمله هو إعدادات جامع حزم الويب. في هذه المناسبة ، يمكنك كتابة مقال منفصل ، لكنني ما زلت أرغب في تصفح الأجزاء الرئيسية من هذا الملف لتشكيل فكرتك العامة لقدراته.

devServer
devServer: { contentBase: `/${publicPath}/`, historyApiFallback: { rewrites: [{from: /./, to: `/index.html`}] }, open: true, port: 9090, publicPath: `/`, proxy: [{ context: ['/api', '/endpoint'], target: { host: "localhost", protocol: 'http:', port: 8090 } }] }, 


يستخدم DevServer لتطوير جانب العميل. كما هو مذكور أعلاه ، يمكننا أن نبدأ مقدمتنا على بداية تشغيل npm منفصلة للمنفذ (ستبدأ على المنفذ 9090). ستسري جميع التغييرات في كود js على الفور على هذا الخادم. ContentBase هو المسار الجذر لتطبيقنا. إذا كان سيتم تشغيل العديد من التطبيقات على الخادم ، فهذا مهم. open: true - عند بدء تشغيل الخادم ، سيتم فتح التطبيق تلقائيًا في المتصفح. الوكيل - القسم المسؤول عن إعادة توجيه المكالمات إلى جزء الخادم ، والذي سنقوم بتشغيله على المنفذ 8090.

الإخراج
 output: { filename: 'assets/javascripts/[hash].js', path: path.join(__dirname, 'src/main/resources/static'), publicPath: `/` }, 


الإخراج - يحدد هذا القسم موقع التجميع لمشروعنا. إذا قمت بتشغيل الأمر npm run build ، فسيظهر جزء العميل من مشروعنا في المجلد src / main / resources.

الوحدة النمطية
 module: { rules: [ { exclude: /node_modules/, include: path.join(__dirname, 'src/main/js/'), test: /\.jsx?$/, use: 'babel-loader' }, { test: /\.css$/, use: [MiniCssExtractPlugin.loader, 'css-loader'] }, { test: /\.less$/, use: [MiniCssExtractPlugin.loader, 'css-loader', 'less-loader'] }, { test: /\.(ico|png|gif|jpe?g)$/, use: { loader: 'file-loader', options: {name: 'assets/images/[name]/[hash].[ext]'} } }, { test: /\.(svg|woff|woff2|eot|ttf)$/, use: { loader: 'file-loader', options: {name: 'assets/fonts/[name]/[hash].[ext]'} } }, {test: /\.html$/, use: 'html-loader'}, ] }, 


يخبر قسم الوحدة webpack ما الذي تبحث عنه في ملفات المشروع ذات الامتدادات .jsx وملفات الأنماط والصور والخطوط وكذلك تضمينها في مشروعنا.

يحتوي قسم الدخول على رابط للملف الرئيسي لتطبيق شبيبة لدينا.

حسنًا ، في الختام ، سيقوم HtmlWebpackPlugin بإنشاء ملف index.html سيتضمن جميع التبعيات التي تم إنشاؤها.

رمز جزء العميل موجود في المجلد src / main / js.

هيكل الكود


في المشروع ، على سبيل المثال ، قمت بعمل اتصال بين العميل والخادم من خلال Rest و WebSocket. من يحب أكثر. وصف التقنيات نفسها إطار الربيع و Rect على الإنترنت الكثير. هذه المقالة لمن لم ينجحوا أو شيء كسول. هذا هو حل عمل جاهز ومخصص يحتوي على كل ما تحتاجه للنمو إلى مشروع كبير كامل.

يمكنك أيضًا أن تأخذ هذا المشروع كنقطة انطلاق في تعلم تطبيقات Java EE أو React .controller / RestController.java

الخادم:


رمز جزء العميل موجود في المجلد src / main / java.

الطريقة التي يقع بها كل شيء هناك تابعة تمامًا لهيكل إطار الربيع. بالنسبة لأولئك الذين هم على دراية به ، فلن يجدوا أي شيء مثير للاهتمام هناك ، ولكن بالنسبة لأولئك الذين بدأوا للتو ، مرة أخرى ، مجرد نزهة قصيرة عبر الملفات.

Main.java هو الملف الرئيسي. يحتوي على الطريقة الرئيسية ، التي تشغل التطبيق بالكامل.

التكوين / WebSocketConfig.java - لنقاط الدخول عند العمل من خلال webSocket

وحدات التحكم - الفئات المسؤولة عن تفاعل أجزاء الخادم والعميل.

جهاز تحكم / IndexController.java - جهاز التحكم المسؤول عن عرض جزء عملائنا. ننقل المستخدم إلى تطبيق url / ** (هذا هو مسار السياق لتطبيقنا)

controller / RestController.java - كما يوحي الاسم ، فإن وحدة التحكم هذه مسؤولة عن تبادل البيانات بين العميل وأجزاء الخادم عبر Rest. يوضح التعليق التوضيحي RequestMapping (value = "/ api / rest"، method = RequestMethod.GET) أنه عند الطلب على / api / rest ، سيقدم لنا الخادم قائمة بالمستخدمين.

لقد استخدمت طريقة PUT لإضافة مستخدمين وحذف ، على التوالي ، لإزالة المستخدم عن طريق المعرف.

تحكم / WebSocketController.java - يحدد مسار تبادل البيانات عبر webSocket. يتلقى الأسلوب getAndSendMessage رسالة من العميل ويعيد توجيهها.

الخدمات - عادة ما تكون مسؤولة عن منطق تطبيقنا.

service / ORMUserService.java - في حالتي ، فهي مسؤولة عن إنشاء قائمة بالمستخدمين ، بالإضافة إلى إضافة مستخدمين إلى قاعدة البيانات وإزالتهم باستخدام المعلمات الواردة من جزء العميل كبيانات. لحذف مستخدم ، هذا هو معرف المستخدم ، ولإنشاء اسم المستخدم والدور وكلمة المرور.

فئات المجال هي فئات غالبًا ما تحتوي فقط على بيانات يتم عرضها على الجداول في قاعدة البيانات. من المنطق الذي يمكن تضمينه في هذه الفئات ، يتم التحقق من صحة البيانات أو بعض الإجراءات التي يجب تنفيذها مباشرة قبل كتابة البيانات إلى قاعدة البيانات أو بعد القراءة منها. على سبيل المثال ، يمكنك التحويل من كيلوغرامات إلى غرامات.

domain / User.java - فئة تتوافق مع جدول الجدول (name = "USER") في قاعدة البيانات.

سيتم إنشاء بيانات عمود Column (name = "ID") تلقائيًا.

domain / Message.java - في حالتي لا تستخدم تعيينات قاعدة البيانات. سيتم تخزين البيانات الموجودة فيه أثناء تشغيل التطبيق. يخدمني لإنشاء رسائل مرسلة عبر webSocket.
هذا كل شيء مع الخادم.

الزبون:


لن أركز على جانب العميل ، لأن React نفسها لا تزال تقنية شابة إلى حد ما. وما زالت لم تشكل أخيرًا أفضل الممارسات التي يجب استخدامها في كل مشروع محدد. ألاحظ فقط أنني قمت بإنشاء الهيكل الأكثر كلاسيكية الأكثر ملاءمة في رأيي للدراسة.

ما تم القيام به في الجبهة:

  • تنفيذ التخطيط الرئيسي للتطبيق وعدة علامات تبويب.
  • الترجمة المنفذة للتطبيق بأكمله.
  • تطبيقات الدولة المنفذة على Redux.
  • عرض جدول المستخدمين المستلمين من الخادم من خلال Rest
  • تم حذف المستخدم بواسطة المعرّف
  • تم تنفيذ إضافة مستخدمين
  • تم تنفيذ إرسال واستقبال الرسائل عبر WebSocket

أعتقد أن هذا أكثر من كافٍ للبداية.

الخلاصة


اترك جميع أسئلتك واقتراحاتك في التعليقات أو اكتب لي في البريد. سأكون سعيدا للمساعدة.

معلومات تفصيلية عن التثبيت وبدء التشغيل


نظام التشغيل "Wondows 10"

قم بتثبيت تعليمات Java 1.8 المفصلة



قبل بدء التثبيت ، اضغط على تركيبة المفاتيح Win + R وأدخل cmd
ندخل نسخة جافا ونرى



هذا يعني أن جافا غير مثبت على هذا الكمبيوتر.

إذا كان الكمبيوتر يعرض إصدارًا من جافا ولم يكن هذا الإصدار أقل من 1.8 ، فانتقل إلى نقطة التثبيت Gradle.

قم بتنزيل Java من الرابط

تحتاج إلى النقر فوق مربع الاختيار قبول اتفاقية الترخيص .

نحن بحاجة إلى إصدار Windows x64

تنزيل جافا



أطلقنا

إطلاق جافا



انقر فوق "التالي" و "موافق" طوال الوقت في نهاية الإغلاق.

بعد التثبيت ، نستدعي سطر أوامر Win + R مرة أخرى وأدخل cmd ، وأدخل java -version ونرى إصدار Java الذي قمنا بتثبيته بالفعل



افتح خصائص جهاز الكمبيوتر الخاص بك

خصائص الكمبيوتر



معلمات إضافية - متغيرات البيئة

متغيرات البيئة



تأكد من أن متغيرات النظام لها JAVA_HOME بالقيمة C: \ Program Files \ Java \ jdk1.8.0_181 \

JAVA_HOME



وفي المتغير Path يوجد سطر C: \ Program Files \ Java \ jdk1.8.0_181 \ bin

المسار



انتقل إلى العنصر التالي.

تعليمات مفصلة لتركيب Gradle


أعد فتح وحدة التحكم واكتب gradle -version
نظرًا لأننا لم نقم بتثبيته بعد ، سنرى من هذا:



قم بتنزيل الأرشيف من الرابط

افتح هنا على سبيل المثال في مثل هذا المجلد C: \ gradle-4.10.1

بعد ذلك ، عن طريق القياس باستخدام جافا ، افتح القسم بمتغيرات النظام وأضف متغير GRADLE_HOME إليه بقيمة C: \ gradle-4.10.1 \ bin

GRADLE_HOME



ونضيف C: \ gradle-4.10.1 \ bin إلى متغير المسار حتى بجوار السطر C: \ Program Files \ Java \ jdk1.8.0_181 \ bin ، لكن هذا ليس ضروريًا.

مسار متدرج



تأكد من إعادة تشغيل وحدة التحكم Win + R cmd واكتب gradle -version



كل شيء الآن ويتم تثبيت gradle!

تعليمات مفصلة العقدة شبيبة



قم بتنزيل Node JS من الرابط

وضبط
تثبيت عقدة شبيبة



نعيد تشغيل سطر الأوامر وأدخل npm -version وسنرى بالتأكيد الإصدار المثبت



إطلاق المشروع


ممتاز ، تم الانتهاء من جميع الأعمال التحضيرية.

تنزيل المشروع كأرشيف

يزن 135 كيلو بايت فقط

جيت



وفك في C: \ response-start-master \

مجلد المشروع



شغّل سطر الأوامر وانتقل إلى C: \ response-start-master \
بالنسبة لأولئك الذين لا يتذكرون ، لتسلق شجرة المجلد في سطر الأوامر ، أدخل القرص المضغوط ..

لذلك نذهب إلى جذر محرك الأقراص C: \>
بعد ذلك ، أدخل cd React-start-master واحصل على المسار C: \ React-master-master>


أدخل npm i


الآن نقوم بتنزيل تبعيات JS لمشروعنا



التحذيرات مسموح بها (تحذير - تحذير)
في المشروع ، يظهر المجلد C: \ response-start-master \ node_modules ، وستكون جميع التبعيات فيه.

مباشرة بعد ذلك ، أدخل بناء الصف في وحدة التحكم



سيتم تنزيل جميع تبعيات Java ، بما في ذلك Spring.
سيظهر المجلد C: \ response-start-master \ build في المشروع



كل شيء سوف يجتمع بالتأكيد وسنرى رسالة حول تجميع ناجح
بناء ناجح

وبعد ذلك مباشرة يمكنك تشغيل الأمر gradle bootRun



سيبدأ تشغيل المشروع



في نهاية الإطلاق ، ستبدو وحدة التحكم على هذا النحو



المشروع كله يعمل!



لا تغلق وحدة التحكم ، فقط قم بالتصغير.

افتح متصفحًا وأدخل localhost : 8090 / application / أو اتبع هذا الرابط

سترى مشروع قيد التشغيل.



يعمل فقط شبيبة



افتح وحدة تحكم أخرى.

انتقل إلى مجلد المشروع C: \ response-start-master>

قم بتشغيل الأمر npm run start

إذا تم بالفعل تنزيل كافة التبعيات لـ JS كما هو موضح أعلاه (الأمر npm i )

سيبدأ هذا المتصفح نفسه في localhost : 9090 /
وسيتم عرض جميع التغييرات في رمز Js للمشروع تلقائيًا هناك!

هذا كل شيء ، شكرا لكم على اهتمامكم.

Source: https://habr.com/ru/post/ar422985/


All Articles