Logical Layering When we use vue3 to develop projects, Separate business from different regionsexport default { setup () { let {queryDo,addDo,delDO,EditDo}=allFun(); queryDo(); //The query interface will be called} } // This is the logic of area A of page function allFun(){ console.log('I am the direct statement in the allFun function and I will be executed' ) function queryDo(){ console.log('I am querying the interface and calling the backend data') } function addDo(){ console.log('I am new') } function delDO(){ console.log('I deleted') } function EditDo(){ console.log('I am the editor interface') } return {queryDo,addDo,delDO,EditDo} } </script> Advantages of doing this
How to deal with such a scenario When we write business logic, <script> export default { setup () { // The structure used here is area A let {queryDo,addDo,delDO,EditDo}=aAreaAllFun(); // Area B let {querHander}=bAreaAllFun(); return {queryDo,addDo,delDO,EditDo,querHander} } } // This is the logic of a certain area on the A area page function aAreaAllFun(){ function queryDo(){ console.log('I am the query interface of area A') } function addDo(){ console.log('I am new') } function delDO(){ console.log('I deleted') } function EditDo(){ console.log('I am the editor interface') } return {queryDo,addDo,delDO,EditDo} } // This is the business logic of area B function bAreaAllFun(){ // Directly call the query interface of area A aAreaAllFun().queryDo(); function querHander(){ console.log("Query interface of area B") } return {querHander} } </script> Although using optimization<script> export default { setup () { // This is the logic of a certain area on the A area page let {addDo,delDO,EditDo}=aAreaAllFun() // This is the logic of a certain area on the B area page let {querHander}=bAreaAllFun(); return {queryDo,addDo,delDO,EditDo,querHander} } } // Public query interface Many areas may use function queryDo(){ console.log('I am the query interface of the region, I have been pulled out') } // This is the logic of a certain area on the A area page function aAreaAllFun(){ function addDo(){ console.log('I am new') } function delDO(){ console.log('I deleted') } function EditDo(){ console.log('I am the editor interface') } return {addDo,delDO,EditDo} } // This is the business logic of area B function bAreaAllFun(){ // Directly call the public query interface queryDo(); function querHander(){ console.log("Query interface of area B") } return {querHander} } </script> reactive does not necessarily have to be written in the setup functionMany friends think that reactive must be written in the setup function. In fact, it is not the case. It can be written where you need it. For example, you can use reactive in the following aAreaAllFun function. <template> <div> <h2>Name: {{ areaData.info.name}}</h2> <h2>Age: {{ areaData.info.age}}</h2> <h2>Gender: {{ areaData.info.sex}}</h2> </div> </template> <script> import { reactive } from '@vue/reactivity'; export default { setup () { let {addDo,areaData}=aAreaAllFun(); return {addDo,areaData} } } // This is the logic of a certain area on the A area page function aAreaAllFun(){ let areaData = reactive({ info: name:'Zhang San', age:20, sex:'male' } }) function addDo(){ console.log('I am new') } return {addDo,areaData} } </script> How to display the value directly on the page In the above example, we want to implement name, age, and gender, we need areaData.info.xxx <template> <div> <h2>Name: {{ name}}</h2> <h2>Age: {{ age}}</h2> <h2>Gender: {{ sex}}</h2> </div> <button @click="ChangeCont">Change value</button> </template> <script> import { reactive,toRefs } from 'vue'; export default { setup () { let {name,age,sex,ChangeCont }=aAreaAllFun(); return {name,age,sex,ChangeCont} } } // This is the logic of a certain area on the A area page function aAreaAllFun(){ let areaData = reactive({ info: name:'Zhang San', age:20, sex:'male' } }) function ChangeCont(){ // If you change the value in this way, the view will not respond. [Error] //areaData.info={ // name:'Li Si', //age:21, // sex:'male' // } // This is OK to update the view correctly [ok] areaData.info.name='123' areaData.info.age=12 areaData.info.sex='male' } // toRefs can convert a responsive object to a normal object. // Every value of this common object is a ref. // Since it becomes a ref, we need to use the value. return {ChangeCont,...toRefs(areaData.info)} } </script> This is the end of this article about the logic extraction and field display of vue3 in the project. For more relevant vue3 logic extraction and field display content, please search for previous articles on 123WORDPRESS.COM or continue to browse the following related articles. I hope everyone will support 123WORDPRESS.COM in the future! You may also be interested in:
|
<<: Mysql 8.0.18 hash join test (recommended)
>>: Tutorial on using portainer to connect to remote docker
During system maintenance, you may need to check ...
Table of contents Overview definition Instance Me...
Index extension: InnoDB automatically extends eac...
Preface When I went to an interview at a company ...
When developing applications that use a database,...
Rancher deployment can have three architectures: ...
Basic syntax The use of text-overflow requires th...
Table of contents 1. Install Docker 2. Install an...
The same server simulates the master-slave synchr...
As shown below: Mainly execute authorization comm...
Step 1: Get the MySQL YUM source Go to the MySQL ...
When using nginx as a reverse proxy, you can simp...
Table of contents 1. Start and stop service instr...
Preface MySQL is the most popular relational data...
I recently configured a server using Tencent Clou...