لطفا جهت اطلاع از آخرین دوره ها و اخبار سایت در
کانال تلگرام
عضو شوید.
آموزش Vue - راهنمای کامل (شامل Vue Router، Vuex و Composition API) [ویدئو]
Vue - The Complete Guide (Including Vue Router, Vuex, and Composition API) [Video]
نکته:
آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
نمونه ویدیوها:
توضیحات دوره:
Vue.js یک فریمورک بسیار محبوب است که نه تنها برای برنامههای موبایل، بلکه برای برنامههای مرورگر، یک تجربه کاربری واکنشپذیر و عالی ارائه میدهد. از این رو، این پردرآمدترین در صنعت توسعه فرانت اند است.
این دوره با مقدمه ای بر Vue.js شروع می شود و توضیح می دهد که چرا یک چارچوب جاوا اسکریپت عالی است. سپس سینتکس ها و قالب های اولیه Vue.js را یاد خواهید گرفت و نحوه خروجی داده های واکنشی و مدیریت رویدادهای صفحه کلید را خواهید دید. در ادامه، نحوه تعامل با Document Object Model (DOM) و تنظیم یک محیط توسعه و گردش کار با Vue CLI را خواهید آموخت. سپس اجزای مختلف را مرور می کنیم و نحوه کار با فرم ها و درخواست های HTTP را به شما نشان می دهیم.
در مرحله بعد، یاد خواهید گرفت که چگونه اپلیکیشن خود را با انیمیشن ها و انتقال ها جذاب کنید و اهمیت مسیریابی و Vuex را در Vue.js درک کنید. در نهایت، ما یک برنامه معامله گر سهام ایجاد می کنیم و مراحل استقرار یک برنامه Vue.js را یاد می گیریم. همچنین یاد خواهید گرفت که چگونه به جای منابع Vue از Axios استفاده کنید و زیر مفاهیم احراز هویت در برنامه های Vue خط بکشید.
در پایان این دوره، شما مهارت های ضروری Vue.js مورد نیاز برای توسعه وب پیشانی و توسعه برنامه های کاربردی مرورگر واکنشی را خواهید داشت.
تمام منابع این دوره در https://github.com/PacktPublishing/Vue---The-Complete-Guide-incl.-Vue-Router-Vuex-and-Composition-API موجود است- درک کنید Vue.js چیست و کاربردهای آن
محیط توسعه دهنده و گردش کار را با CLI تنظیم کنید
یک برنامه منبع یادگیری برای درک اجزا، فرم ها و استایل ایجاد کنید
یک اپلیکیشن تک صفحه ای برای درک مسیریابی بسازید
نحوه پیاده سازی انیمیشن ها و انتقال ها در برنامه های Vue را بیاموزید
بهبود مدیریت حالت با استفاده از Vuex اگر یک مهندس نرم افزار یا توسعه دهنده وب هستید که به توسعه frontend علاقه مند هستید یا می خواهید برنامه های مرورگر واکنشی را با استفاده از Vue.js بسازید، این دوره برای شما مناسب است. برای شروع این دوره، دانش اولیه جاوا اسکریپت، HTML و CSS ضروری است. آشنایی با Vue.js و نحوه استفاده از آن در پروژههای دنیای واقعی * آخرین نسخه Vue، از جمله API ترکیبی کاملاً جدید را کاوش کنید * برای ساخت برنامههای ساده تا بزرگ در سطح سازمانی در Vue.js آماده شوید.
سرفصل ها و درس ها
شروع شدن
Getting Started
به دوره خوش آمدید!
Welcome to the Course!
Vue.js چیست؟
What is Vue.js?
روش های مختلف استفاده از Vue
Different Ways of Using Vue
کاوش گزینه های Vue
Exploring Vue Alternatives
ساختن اولین برنامه خود با جاوا اسکریپت
Building Your First App with JavaScript
ساخت مجدد برنامه با Vue.js
Re-Building the App with Vue.js
Vue Versus Vanilla JavaScript (فقط جاوا اسکریپت)
Vue Versus Vanilla JavaScript (Just JavaScript)
راه اندازی محیط توسعه دوره
Setting Up the Course Development Environment
خلاصه و محتویات دوره
Course Outline and Contents
چگونه از این دوره بیشترین بهره را ببرید
How to Get the Most Out of This Course
مفاهیم اولیه و اصلی - تعامل مدل شی سند (DOM) با Vue
Basics and Core Concepts – Document Object Model (DOM) Interaction with Vue
معرفی ماژول
Module Introduction
ایجاد و اتصال نمونه های برنامه Vue
Creating and Connecting Vue App Instances
درون یابی و اتصال داده ها
Interpolation and Data Binding
ویژگی های الزام آور با دستورالعمل "V-Bind".
Binding Attributes with the “V-Bind†Directive
آشنایی با "روش ها" در Vue Apps
Understanding “Methods†in Vue Apps
کار با داده ها در داخل یک برنامه Vue
Working with Data Inside a Vue App
خروجی محتوای خام HTML با V-html
Outputting Raw HTML Content with V-html
خلاصه اول
First Summary
درک رویداد Binding
Understanding Event Binding
رویدادها و روش ها
Events and Methods
کار با رویدادها و استدلال ها
Working with Events and Arguments
استفاده از Native Event Object
Using the Native Event Object
کاوش در اصلاح کننده های رویداد
Exploring Event Modifiers
قفل کردن محتوا با V-Once
Locking Content with V-Once
اتصال داده + اتصال رویداد = اتصال دو طرفه
Data Binding + Event Binding = Two-Way Binding
روش های مورد استفاده برای اتصال داده ها: چگونه کار می کند؟
Methods Used for Data Binding: How it Works?
معرفی ویژگی های محاسبه شده
Introducing Computed Properties
کار با Watchers
Working with Watchers
روش ها در مقابل ویژگی های محاسبه شده در مقابل ناظران
Methods Versus Computed Properties Versus Watchers
V-Bind و V-On Shorthands
V-Bind and V-On Shorthands
یک ظاهر طراحی پویا با سبک های درون خطی
Dynamic Styling with Inline Styles
اضافه کردن کلاس های CSS به صورت پویا
Adding CSS Classes Dynamically
کلاس ها و ویژگی های محاسبه شده
Classes and Computed Properties
کلاس های دینامیک: نحو آرایه
Dynamic Classes: Array Syntax
خلاصه ماژول
Module Summary
ارائه محتوا و فهرست های مشروط
Rendering Conditional Content and Lists
معرفی ماژول
Module Introduction
درک مسئله
Understanding the Problem
ارائه محتوا به صورت مشروط
Rendering Content Conditionally
V-if، V-else و V-else-if
V-if, V-else, and V-else-if
استفاده از V-show به جای V-if
Using V-show Instead of V-if
رندر کردن لیست داده ها
Rendering Lists of Data
غواصی عمیق تر در v-For
Diving Deeper into v-For
حذف موارد فهرست
Removing List Items
گوش دادن به رویدادها
Listening to Events
خلاصه ماژول
Module Summary
پروژه دوره: بازی قاتل هیولا
Course Project: The Monster Slayer Game
معرفی ماژول
Module Introduction
راه اندازی پروژه و روش های اول
Project Setup and First Methods
به روز رسانی Healthbars
Updating the Healthbars
افزودن یک "حمله ویژه".
Adding a “Special Attackâ€
افزودن یک عملکرد "Heal".
Adding a “Heal†Functionality
افزودن یک صفحه نمایش «بازی بیش از حد».
Adding a “Game Over†Screen
اتمام کارکرد اصلی
Finishing the Core Functionality
اضافه کردن یک گزارش نبرد
Adding a Battle Log
Vue: پشت صحنه
Vue: Behind the Scenes
معرفی ماژول
Module Introduction
مقدمه ای بر واکنش پذیری Vue
An Introduction to Vue's Reactivity
Vue Reactivity: A Deep Dive
Vue Reactivity: A Deep Dive
یک برنامه در مقابل چندین برنامه
One App Versus Multiple Apps
درک قالب ها
Understanding Templates
کار با Refs
Working with Refs
چگونه Vue مدل شیء سند (DOM) را به روز می کند
How Vue Updates the Document Object Model (DOM)
چرخه حیات برنامه Vue - تئوری
Vue App Lifecycle – Theory
چرخه عمر برنامه Vue - تمرین کنید
Vue App Lifecycle – Practice
معرفی کامپوننت ها
Introducing Components
معرفی ماژول
Module Introduction
درک مسئله
Understanding the Problem
معرفی کامپوننت ها
Introducing Components
ایجاد رابط های کاربری پیچیده با کامپوننت ها
Building Complex User Interfaces with Components
با Vue CLI به یک تنظیم و گردش کار بهتر توسعه میروید
Moving to a Better Development Setup and Workflow with the Vue CLI
معرفی ماژول
Module Introduction
چرا به سرور توسعه نیاز دارید؟
Why You Need a Development Server?
چرا تجربه توسعه دهنده بهتری می خواهید؟
Why You Want a Better Developer Experience?
نصب و استفاده از Vue CLI
Installing and Using the Vue CLI
بازرسی پروژه ایجاد شده
Inspecting the Created Project
بررسی کد Vue و فایلهای “.vueâ€
Inspecting the Vue Code and “.vue†Files
افزودن پسوند “Veturâ € به کد ویژوال استودیو
Adding the “Vetur†Extension to Visual Studio Code
اطلاعات بیشتر در “.vueâ € Files
More on “.vue†Files
فیلتر کردن درخواستها برای مربی فعال
Filtering Requests for the Active Coach
ارسال یک درخواست PUT HTTP برای ذخیره داده های مربی
Sending a PUT HTTP Request to Store Coach Data
واکشی داده های مربی (دریافت درخواست HTTP)
Fetching Coach Data (GET HTTP Request)
ارائه یک اسپینر در حال بارگذاری
Rendering a Loading Spinner
اضافه کردن مدیریت خطای HTTP
Adding HTTP Error Handling
ارسال درخواست های کوچینگ با استفاده از درخواست های HTTP
Sending Coaching Requests Using HTTP Requests
ذخیره داده های پاسخ HTTP
Caching HTTP Response Data
اضافه کردن مسیر انتقال
Adding Route Transitions
صفحه و خلاصه "یافت نشد".
The “Not Found†Page and Summary
Vue و احراز هویت
Vue and Authentication
معرفی ماژول
Module Introduction
احراز هویت در برنامه های Vue [یا هر برنامه تک صفحه ای (SPA)] چگونه کار می کند؟
How Authentication Works in Vue Apps [or Any Single-Page Application (SPA)]?
قفل کردن/محافظت از منابع باطن
Locking/Protecting Backend Resources
افزودن صفحه احراز هویت (ورود به سیستم و ثبت نام)
Adding an Authentication Page (Login and Signup)
آماده سازی Vuex
Preparing Vuex
افزودن یک اقدام و جریان "ثبت نام".
Adding a “Signup†Action and Flow
UX بهتر: بارگیری اسپینر و مدیریت خطا
Better UX: Loading Spinner and Error Handling
افزودن یک اکشن و جریان «ورود».
Adding a “Login†Action and Flow
پیوست کردن توکن به درخواستهای خروجی
Attaching the Token to Outgoing Requests
به روز رسانی UI بر اساس وضعیت Auth
Updating the UI Based on Auth State
افزودن یک «خروج» Action and Flow
Adding a “Logout†Action and Flow
احراز هویت و مسیریابی (از جمله گاردهای ناوبری)
Authentication and Routing (Including Navigation Guards)
افزودن «ورود خودکار»
Adding “Auto Loginâ€
افزودن «خروج خودکار».
Adding “Auto Logoutâ€
خلاصه
Summary
بهینه سازی و استقرار برنامه های Vue
Optimizing and Deploying Vue Apps
معرفی ماژول
Module Introduction
چه چیزی را مستقر کنیم؟
What to Deploy?
بهینه سازی: با استفاده از اجزای ناهمزمان
Optimization: Using Asynchronous Components
ساخت پروژه برای تولید
Building the Project for Production
استقرار یک برنامه Vue
Deploying a Vue App
Composition API – جایگزینی API Options
The Composition API – Replacing the Options API
معرفی ماژول
Module Introduction
Composition API کدام مشکل را حل می کند؟
Which Problem Does the Composition API Solve?
جایگزینی “Data†با Refs
Replacing “Data†with “Refsâ€
ساختن اجسام «واکنشی».
Building “Reactive†Objects
واکنش پذیری: شیرجه عمیق
Reactivity: A Deep Dive
جایگزینی «روشها» با توابع منظم
Replacing “Methods†with Regular Functions
جایگزینی «ویژگیهای محاسبهشده» با تابع «محاسبهشده»
Replacing “Computed Properties†with the “Computed†Function
دو طرفه Binding و Composition API
Two-Way Binding and the Composition API
کار با Watchers
Working with Watchers
اولین خلاصه
A First Summary
نحوه استفاده از Refs الگو
How to Use Template Refs
کامپوننت ها، Props و Composition API
Components, Props, and the Composition API
انتشار رویدادهای سفارشی
Emitting Custom Events
کار با ارائه/تزریق
Working with Provide/Inject
Lifecycle Hooks در Composition API
Lifecycle Hooks in the Composition API
مهاجرت از Options API به Composition API - یک پروژه نمونه
Migrating from Options API to Composition API - An Example Project
مهاجرت یک جزء اول
Migrating a First Component
مهاجرت یک جزء بزرگ
Migrating a Big Component
مهاجرت اجزای باقیمانده
Migrating the Remaining Components
Routing، Params و Composition API
Routing, Params, and the Composition API
Route and Router Objects و Composition API
Route and Router Objects and the Composition API
استفاده از Vuex با Composition API
Using Vuex with the Composition API
خلاصه
Summary
قابلیت استفاده مجدد: ترکیبات و توابع ترکیب سفارشی
Reusing Functionality: Mixins and Custom Composition Functions
معرفی ماژول
Module Introduction
مفاهیم قابلیت استفاده مجدد
Reusability Concepts
استفاده از Mixins
Using Mixins
ادغام مخلوط ها
Merging Mixins
میکس های جهانی
Global Mixins
مضرات Mixins
Disadvantages of Mixins
Hooks/Composable سفارشی و Composition API
Custom Hooks/Composable and the Composition API
توابع ترکیب سفارشی بیشتر
More Custom Composition Functions
مثال: ایجاد قلاب «جستجو».
Example: Creating a “Search†Hook
گوچاهای قلاب سفارشی
Custom Hooks Gotchas
افکار بیشتر در مورد قلاب های سفارشی/قابل ترکیب
More Thoughts on Custom Hooks/Composable
مثال: یک قلاب «مرتب سازی» سفارشی
Example: A Custom “Sort†Hook
جمع بندی و مراحل بعدی
Roundup and Next Steps
جمع بندی دوره و مراحل بعدی
Course Roundup and Next Steps
Vue 2 به Vue 3 Migration
Vue 2 to Vue 3 Migration
Vue 3 - نمای کلی
Vue 3 - Overview
تغییرات مهم و مراحل مهاجرت
Important Changes and Migration Steps
Vue 3: ویژگی های جدید
Vue 3: New Features
New Composition API (اختیاری)
The New Composition API (Optional)
درباره این دوره و Vue 3
About This Course and Vue 3
شروع به کار [VUE2]
Getting Started [VUE2]
معرفی دوره
Course Introduction
ایجاد اولین برنامه Vue.js شما
Creating Your First Vue.js Application
گسترش برنامه Vue.js
Extending the Vue.js Application
ساختار دوره
Course Structure
از تمام منابع دوره استفاده کنید!
Take Advantage of All Course Resources!
Vue.js را به صورت محلی تنظیم کنید
Set Up Vue.js Locally
استفاده از Vue.js برای تعامل با Document Object Model (DOM) [VUE2]
Using Vue.js to Interact with the Document Object Model (DOM) [VUE2]
معرفی ماژول
Module Introduction
آشنایی با قالب های Vue.js
Understanding Vue.js Templates
نحو و نمونه Vue.js چگونه با هم کار می کنند
How the Vue.js Template Syntax and Instance Work Together
دسترسی به داده ها در نمونه Vue
Accessing Data in the Vue Instance
صفات الزام آور
Binding Attributes
درک و استفاده از دستورالعمل ها
Understanding and Using Directives
Rendering را با V-Once غیرفعال کنید
Disable Re-Rendering with V-Once
چگونه HTML خام را خروجی کنیم؟
How to Output Raw HTML?
گوش دادن به رویدادها
Listening to Events
دریافت داده های رویداد از شی رویداد
Getting Event Data from the Event Object
گذراندن استدلال های خود با رویدادها
Passing Your Own Arguments with Events
اصلاح یک رویداد - با اصلاح کننده های رویداد
Modifying an Event - with Event Modifiers
گوش دادن به رویدادهای صفحه کلید
Listening to Keyboard Events
نوشتن کد جاوا اسکریپت در قالب ها
Writing JavaScript Code in the Templates
استفاده از اتصال دو طرفه
Using Two-Way Binding
نوشتن کد جاوا اسکریپت در قالب ها
Writing JavaScript Code in the Templates
واکنش به تغییرات با ویژگی های محاسبه شده
Reacting to Changes with Computed Properties
جایگزینی برای ویژگی های محاسبه شده: مشاهده تغییرات
An Alternative to Computed Properties: Watching for Changes
صرفه جویی در زمان با حروف کوتاه
Saving Time with Shorthands
یک ظاهر طراحی پویا با کلاس های CSS - اصول
Dynamic Styling with CSS Classes – Basics
استایل پویا با کلاس های CSS - با استفاده از اشیاء
Dynamic Styling with CSS Classes - Using Objects
استایل پویا با کلاسهای CSS - استفاده از نامها تنظیم سبکها به صورت پویا (بدون کلاسهای CSS)
Dynamic Styling with CSS Classes - Using Names Setting Styles Dynamically (without CSS Classes)
استایل دادن به عناصر با نحو آرایه
Styling Elements with the Array Syntax
بسته بندی ماژول
Module Wrap Up
استفاده از فهرستهای شرطی و رندر [VUE2]
Using Conditionals and Rendering Lists [VUE2]
معرفی ماژول
Module Introduction
رندر شرطی با V-If
Conditional Rendering with V-If
استفاده از V-If Syntax جایگزین
Using an Alternative V-If Syntax
آن را با V-Show جدا نکنید
Don't Detach it with V-Show
رندر کردن لیست ها با V-For
Rendering Lists with V-For
دریافت شاخص فعلی
Getting the Current Index
استفاده از V-For Syntax جایگزین
Using an Alternative V-For Syntax
حلقه زدن از طریق اشیاء
Looping through Objects
حلقه زدن از طریق فهرست اعداد
Looping through a List of Numbers
ردیابی عناصر در حین استفاده از V-For
Keeping Track of Elements While Using V-For
بسته بندی ماژول
Module Wrap Up
پروژه اولین دوره - قاتل هیولا [VUE2]
First Course Project - The Monster Slayer [VUE2]
مقدمه و چالش
Introduction and Challenge
راه اندازی پروژه دوره
Setting Up the Course Project
ایجاد نمونه Vue و استایل دادن به Healthbars
Creating the Vue Instance and Styling the Healthbars
نمایش کنترل های پخش کننده به صورت مشروط
Showing the Player Controls Conditionally
پیاده سازی یک روش "شروع بازی".
Implementing a “Start Game†Method
پیاده سازی یک روش "حمله".
Implementing an “Attack†Method
کد بهتری بنویسید - زمان بازآفرینی است!
Write better Code - Time for Refactoring!
اجرای "حمله ویژه".
Implementing a “Special Attackâ€
اجرای یک روش "Heal".
Implementing a “Heal†Method
اتمام دکمه های اکشن
Finishing the Action Buttons
ایجاد Action Log
Creating an Action Log
چاپ گزارش (v-for)
Printing the Log (v-for)
اتمام گزارش
Finishing the Log
حالت دادن به گزارش مشروط
Styling the Log Conditionally
بسته شدن
Wrap Up
درک نمونه Vue.js [VUE2]
Understanding the Vue.js Instance [VUE2]
معرفی ماژول
Module Introduction
برخی از اصول اولیه در مورد نمونه Vue.js
Some Basics about the Vue.js Instance
استفاده از چندین نمونه Vue
Using Multiple Vue Instances
دسترسی به نمونه Vue از خارج
Accessing the Vue Instance from Outside
Vue.js چگونه داده ها و روش های شما را مدیریت می کند
How Vue.js Manages Your Data and Methods
A r به $el و $data نگاه کنید
A r Look at $el and $data
قرار دادن $refs و استفاده از آنها در قالب های خود
Placing $refs and Using Them on Your Templates
کجا درباره Vue API بیشتر بیاموزیم؟
Where to Learn More about the Vue API?
نصب قالب
Mounting a Template
استفاده از کامپوننت ها
Using Components
محدودیت های برخی از قالب ها
Limitations of Some Templates
Vue.js چگونه مدل شیء سند (DOM) را به روز می کند؟
How Vue.js Updates the Document Object Model (DOM)?
چرخه حیات نمونه Vue.js
The Vue.js Instance Lifecycle
چرخه حیات نمونه Vue.js در عمل
The Vue.js Instance Lifecycle in Practice
بسته بندی ماژول
Module Wrap Up
حرکت به یک جریان کاری توسعه واقعی با Webpack و Vue CLI [VUE2]
Moving to a “Real†Development Workflow with Webpack and Vue CLI [VUE2]
معرفی ماژول
Module Introduction
چرا به سرور توسعه نیاز دارید؟
Why Do You Need a Development Server?
«روی کار توسعه» به چه معناست؟
What Does “Development Workflow†Mean?
استفاده از Vue CLI برای ایجاد پروژه ها
Using the Vue CLI to Create Projects
نصب Vue CLI و ایجاد یک پروژه جدید
Installing the Vue CLI and Creating a New Project
نمای کلی ساختار پوشه Webpack Template
Overview of the Webpack Template Folder Structure
درک فایل های “.vueâ €
Understanding the “.vue†Files
درک شیء در فایل Vue
Understanding the Object in the Vue File
چگونه اپلیکیشن خود را برای تولید بسازید
How to Build Your App for Production
بسته بندی ماژول
Module Wrap Up
مقدمه ای بر کامپوننت ها [VUE2]
An Introduction to Components [VUE2]
معرفی ماژول
Module Introduction
مقدمه ای بر کامپوننت ها
An Introduction to Components
ذخیره داده ها در کامپوننت ها با روش داده
Storing Data in Components with the Data Method
ثبت قطعات به صورت محلی و جهانی
Registering Components Locally and Globally
“Root Component†در فایل App.vue
“Root Component†in the App.vue File
ایجاد کامپوننت
Creating a Component
استفاده از کامپوننت ها
Using Components
حرکت به یک ساختار پوشه بهتر
Moving to a Better Folder Structure
نحوه نامگذاری برچسب های مؤلفه (انتخاب کنندگان)
How to Name Your Component Tags (Selectors)
Scoping Component Styles
Scoping Component Styles
بسته بندی ماژول
Module Wrap Up
برقراری ارتباط بین مؤلفه ها [VUE2]
Communicating Between Components [VUE2]
معرفی ماژول
Module Introduction
مشکلات ارتباطی
Communication Problems
استفاده از Props for Parent => Child Communication
Using Props for Parent => Child Communication
نامگذاری "پروپاس".
Naming “propsâ€
استفاده از «Props» در مؤلفه کودک
Using “Props†in the Child Component
اعتبار سنجی “Propsâ€
Validating “Propsâ€
استفاده از رویدادهای سفارشی برای کودک => ارتباط والدین
Using Custom Events for Child => Parent Communication
درک جریان داده های یک طرفه
Understanding Unidirectional Data Flow
برقراری ارتباط با توابع پاسخ به تماس
Communicating with Callback Functions
ارتباط بین اجزای خواهر و برادر
Communication between Sibling Components
استفاده از اتوبوس رویداد برای ارتباط
Using an Event Bus for Communication
متمرکز کردن کد در گذرگاه رویداد
Centralizing Code in an Event Bus
بسته شدن
Wrap Up
استفاده از مؤلفه پیشرفته [VUE2]
Advanced Component Usage [VUE2]
معرفی ماژول
Module Introduction
راه اندازی پروژه ماژول
Setting Up the Module Project
محتوای عبور - راه حل کمتر از حد مطلوب
Passing Content - The Suboptimal Solution
ارسال محتوا با اسلات
Passing Content with Slots
محتوای اسلات چگونه کامپایل و سبک می شود؟
How Slot Content Gets Compiled and Styled?
استفاده از اسلات های متعدد (اسلات های نامگذاری شده)
Using Multiple Slots (Named Slots)
اسلات های پیش فرض
Default Slots
خلاصه ای از اسلات ها
A Summary on Slots
تعویض چندین کامپوننت با کامپوننت های پویا
Switching Multiple Components with Dynamic Components
نمایش نظرات