In trying to debug the latest problem with vue-router (can't add a new page /person), I want to back up and understand vue fundamentals better.
Whatever other code is going on in firstfile.js, you are offering that object to the world as the entry point. Another file (which could be a module) can bring it in with an import statement:
vue executable
Vue (3.9.2) is installed on my Windows system, so that I can say
vue ui runs the browser-based control app (at localhost:8000).
Vue seems to make extensive use of JavaScript "modules" for its component system. In JavaScript, the export statement makes an object (or resource in general) available. You say this in firstfile.js:vue create <app-name>
in any directory. vue info
shows that I have npm (6.4.1) in C:\Program Files\nodejs\npm.CMD
, but that @vue/cli
is not installed.c:\Users\alast\AppData\Roaming\npm\vue.cmd
- is basically node vue.js
.vue create
makes a scaffold:<project>/ public/ index.html favicon.html src/ <-- '@' in an import refers to here assets/ components/ views/ App.vue main.js <-- entry point router.js
vue ui runs the browser-based control app (at localhost:8000).
Modules
export { name: "App", data: "1234" }
Whatever other code is going on in firstfile.js, you are offering that object to the world as the entry point. Another file (which could be a module) can bring it in with an import statement:
import App from './firstfile'
If you want to be able to say import defaultExport from "./firstfile" you need the default keyword:
export default { name: "MyMod", data: "1234" }
Apparently, every .vue file is a module.
In PHP, the include statement is replaced by the contents of the file, so it is executed right there. Import may work the same way (I don't know), but since it's typically an object literal, it doesn't get executed. It brings it into the namespace of the importing file. They say you are importing "bindings" only--that is, the ability to refer to the object and its constituents by name.
Again, bindings. Importing a .vue file gives you access to its data, computed, methods, and its processed template and style. If you use it in a template context, its html gets inserted in place.
In PHP, the include statement is replaced by the contents of the file, so it is executed right there. Import may work the same way (I don't know), but since it's typically an object literal, it doesn't get executed. It brings it into the namespace of the importing file. They say you are importing "bindings" only--that is, the ability to refer to the object and its constituents by name.
Vue Files
Vue Files have three parts: Template, Script, and Style. I think it works like this: Vue compiles the template, replacing vue commands and mustache injections with real references and puts the result into the export object. So, the export object has name:, data: and now html: components. I don't know specifically, but I think only the Script portion is run when the .vue file is imported by its parent.Again, bindings. Importing a .vue file gives you access to its data, computed, methods, and its processed template and style. If you use it in a template context, its html gets inserted in place.
Comments
Post a Comment