grapewheel / avvw

Apicloud + Vue2 + Vant(有赞前端)+ Webpack4打包,极速开发APP框架,将apicloud的渲染效率和vue数据绑定特性发挥极致!
153 stars 55 forks source link

vue的入口文件是哪个? #7

Closed amnextking closed 5 years ago

amnextking commented 5 years ago

我写了一个toast组件(类似此篇文章),现在需要全局注册此组件,避免反复注册。 但是我尝试了两种方法都没法实现,一在src目录下新建main.js,二在page.ejs中调用全局注册函数。 请指教如何处理呢? 另外请问如何不使用APICloud Studio来调用一些APICloud的模块呢?

grapewheel commented 5 years ago

@amnextking avvw只是使用了vue语法特性生成每个apicloud的页面,但实际上他的运行原理还是apicloud的单独页面生命周期方式,而不是vue的单页面spa方式,所以你无法类似vue那样只全局注册一次函数,即便你全局注册了函数,也只是当前页面有效,如果你执着要全局加载自定义组件,那么可以这样:

但修改前必须将你的组件变成原始window组件注册,并在head头部,script标签引入

<script type="text/javascript" src="toast.min.js"></script>

然后再修改page.ejs

// Apicloud initialize
apiready = function () {
Vue.prototype.$ac = api // Vue global apicloud API
page = new Vue({
el: '#page',
components: {
'vue': <%= htmlWebpackPlugin.options.name %>Vue,
'toast': Toast // toast组件全局window注册的函数名
},
mounted: function () {
Origami.fastclick(document.body) // You must use fastclick on the mobile
}
})
}

所以个人建议自定义组件,直接在需要的页面import引入比较好

grapewheel commented 5 years ago

另外请问如何不使用APICloud Studio来调用一些APICloud的模块呢?

关于这个问题,其实你只需要弄懂apicloud的console命令,那么你用什么IDE都是一样的,类似你要弄懂apicloud-cli

amnextking commented 5 years ago

感谢回复,主要是由于Toast用的太频繁了,所以会想全局注册。