每个 Vue
应用 都是 new Vue
函数创建的一个新的实例,创建的时候将 data
作为 property
添加到响应式系统中
const vm = new Vue({
// options
})
createApp
创建一个 应用实例(Application Instance
)import { createApp } from 'vue';
import App from './App.vue';
// 返回应用实例
const app = createApp(App);
app.use(Antd).use(router).use(vuex);
app.mount('#app');
createApp
传递的组件,称之为根组件(root component
)mount
方法用来将应用实例挂载到 Dom
节点上,返回的是组件实例(Component Instance
)refs
获取的都是组件实例import { createApp } from 'vue';
// 根组件
import App from './App.vue';
const app = createApp(App);
// 返回组件实例
const vm = app.mount('#app');
这是一个神奇的混合实例
proxy
属性,可以拿到组件实例上面的内容appContext
,可以拿到应用实例上的部分属性import { getCurrentInstance } from 'vue';
const internal = getCurrentInstance()
DOMString
,返回一个 URL
,URL
和 document
绑定,表示指定的 file
对象try {
url = URL.createObjectURL(File)
} catch (error) {
console.log('File transform error', error)
}
url
是一个以 blol
开头的地址,指向内存中存放图片的地址,使用 uft-16
字符串进行保存。
FileReader
上面的实例方法,读取指定的 File
对象,读取完成的时候触发回调,返回 base64
格式的字符串。// 创建一个 FileReader 实例
const fileReader = new FileReader()
fileReader.readAsDataURL(File)
// 需要绑定事件
fileReader.addEventListener('load', () => {
// 结果保存在 fileReader.result 中
url = fileReader.result
})
// 错误处理事件
fileReader.addEventListener('error', () => {
console.log('upload transform error', error)
})
url
是一个以 data
开头的 base64
格式的字符串。
URL.createObjectURL(File)
得到的是内存中存放图片的地址,使用 uft-16
字符串进行保存。FileReader.readAsDataURL(File)
得到的是 base64
格式的字符串。URL.createObjectURL(File)
直接返回,同步执行FileReader.readAsDataURL(File)
通过回调的方式返回,异步执行URL.createObjectURL(File)
存在于当前 document
中,清除方式只有 unload()
事件 URL.revokeObjectURL()
方法手动清除FileReader.readAsDataURL(File)
依照 JS
垃圾回收机制自动从内存中进行清理URL.createObjectURL(File)
得到本地内存容器的 URL
地址,同步使用,比较方便快捷,多次使用需要注意手动释放内存的问题,性能优秀。FileReader.readAsDataURL(File)
胜在直接将文件转为 base64
格式,可以直接用于业务,无需二次转化格式。img dom
节点有个神奇的类型称之为 HTMLImageElement
,它是标准 webAPI 的一部分,还有很多类似的 HTML
标签类型
HTMLInputElement
HTMLDivElement
HTMLImageElement
继承自 HTMLElement
HTMLElement
继承自 Element
HTMLElement
SVGELement
Element
继承自 Node
Document
Element
DocumentFragment
Node
继承自 EventTarget
Element
,Document
,Window
XHLHttpRequest
export const getImageDimensions = (url: string | File) => {
return new Promise<{ width: number; height: number }>((resolve, reject) => {
const img = new Image();
img.src = typeof url === 'string' ? url : URL.createObjectURL(url);
img.addEventListener('load', () => {
const { naturalWidth: width, naturalHeight: height } = img;
resolve({ width, height });
});
img.addEventListener('eror', () => {
reject(new Error('there was some problem with the image'));
});
});
};