vue框架中,图片应该保存在哪里?应该如何访问?

        在使用vue框架进行开发的过程中,有两个文件夹都可以存放我们的图片以及样式等等,一个是public文件夹,一个是src下的assets文件夹;接下来博主会从这两个文件夹对图片的不同处理来进行分析:

public

        如果将图片存入public文件夹,系统就会将原来的图片路径及名称编译为一个随机的名字,如下:

        经过编译后的图片会极大的减小所占内存,所以在网页中直接展示的图片或者经常随数据库变换而变换的图片都应该放在public文件夹下,这样也可以加快网页的运行速度。

public下的图片用绝对路径来访问(比如下public下的img中有一张图片1.jpg):

src="/img/1.jpg"

如果要访问动态的图片则用如下写法:

let pic = "1.jpg"        

<img :src="`/img/${pic}`">

src/assets

        存入assets文件夹下的图片则不会被编译处理,而是原封不动的保存在服务器中;像网页中一些固定不变的图片如登录注册以及其他各种矢量图就应放于assets中。

存于assets中的图片用相对路径来访问

src="@/assets/img/1.jpg"(@就相当于src)

src="../assets/img/1.jpg"

如果要访问动态的图片则用如下写法:

let pic = "1.jpg"

<img :src="require(`../assets/images/a/${pic}`)">

  • 27
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论
### 回答1: 可以使用 Cesium 的 `BillboardCollection` 类来实现在 Vue 框架点击创建 billboard 的功能。 首先,在 Vue 组件的 data 定义一个变量来存储 billboard 集合: ``` data() { return { billboardCollection: new Cesium.BillboardCollection() } } ``` 然后,在组件的 mounted 钩子函数,将 billboard 集合添加到场景: ``` mounted() { this.viewer.scene.primitives.add(this.billboardCollection); } ``` 接着,在组件的 template 绑定点击事件,在事件处理函数添加新的 billboard: ``` <template> <div @click="addBillboard">Click to add a billboard</div> </template> <script> export default { methods: { addBillboard() { // 获取鼠标点击的位置 let pickedObject = this.viewer.scene.pick(this.viewer.camera.getPickRay(this.viewer.canvas.clientWidth / 2, this.viewer.canvas.clientHeight / 2)); if (Cesium.defined(pickedObject)) { let position = this.viewer.scene.globe.ellipsoid.cartesianToCartographic(pickedObject.position); // 创建新的 billboard let billboard = this.billboardCollection.add({ position: Cesium.Cartesian3.fromRadians(position.longitude, position.latitude, position.height + 100), image: 'path/to/image.png' }); } } } } </script> ``` 在这个例子,我们使用了 Cesium 的 `pick` 方法来获取鼠标点击的位置,然后使用 `Cartesian3.fromRadians` 将经纬度坐标转换为笛卡尔坐标,最后使用 `BillboardCollection.add` 方法添加新的 billboard。 希望这些信息能帮助您实现在 Vue 框架使用 Cesium 创建 billboard 的功能。 ### 回答2: 在Vue框架实现点击创建billboard功能,可以按照以下步骤进行: 1. 首先,在Vue项目引入Cesium库,可以通过npm安装或直接引入Cesium.js文件。 2. 在Vue组件,可以在`mounted`钩子函数创建Cesium的Viewer对象,并将其初始化为指定DOM元素的父元素,如: ``` mounted() { this.viewer = new Cesium.Viewer(this.$refs.mapContainer); } ``` 其`$refs.mapContainer`是在模板定义的一个ref,用于获取地图容器的DOM元素。 3. 在模板定义一个按钮,并绑定一个点击事件,如: ```vue <template> <div> <button @click="createBillboard">创建Billboard</button> <div class="map-container" ref="mapContainer"></div> </div> </template> ``` 4. 在Vue组件的methods选项定义`createBillboard`方法,用于创建billboard。在该方法,可以使用Cesium的`Cesium.Cartesian3`类创建一个位置,然后通过`Cesium.BillboardCollection`类创建一个billboard,并设置其属性,最后将billboard添加到scene。代码示例如下: ```vue methods: { createBillboard() { // 创建位置 var position = Cesium.Cartesian3.fromDegrees(103, 30); // 创建BillboardCollection并设置属性 var billboard = this.viewer.scene.primitives.add( new Cesium.BillboardCollection() ); billboard.add({ position: position, image: "path/to/billboard-image.png", scale: 1.0, }); }, } ``` 其,`Cesium.Cartesian3.fromDegrees`根据经纬度创建一个位置,`Cesium.BillboardCollection`用于存储和渲染多个billboard,`image`属性指定billboard的图片路径,`scale`属性用于设置billboard的大小。 5. 最后,通过点击按钮,调用`createBillboard`方法即可在地图上创建一个billboard。 这样,就在Vue框架实现了点击创建billboard功能。 ### 回答3: 在Vue框架实现点击创建Billboard功能,可以按照以下步骤实现: 1. 首先,将Cesium集成到Vue项目。可以通过npm安装Cesium,然后在Vue组件引入Cesium相关的库文件。 2. 在Vue组件的data选项添加一个数组billboards,用于存储所有的Billboard对象信息。在初始状态下,该数组为空。 3. 在Vue组件的template添加一个Cesium的Canvas元素,用于渲染Cesium场景。可以将该Canvas元素的id设为"cesiumContainer"。 4. 在Vue组件的methods选项添加一个方法handleClick,用于处理点击事件。在该方法内,获取点击事件的坐标,在3D场景添加一个Billboard对象,并将其位置设为点击坐标。然后,将该Billboard对象的信息添加到billboards数组保存。 5. 在Vue组件的mounted钩子函数,通过Cesium的Viewer对象初始化3D场景,并将Canvas元素绑定到该Viewer对象上。同时,监听Canvas元素的点击事件,当点击事件发生时,调用handleClick方法。 6. 在Vue组件的template,使用v-for指令循环遍历billboards数组,并根据每个Billboard对象的信息,在Canvas显示对应的Billboard元素。 通过以上步骤,就可以在Vue框架实现点击创建Billboard功能。当用户在Canvas点击时,会在点击位置创建一个Billboard,并在屏幕上显示出来。同时,Billboard对象的信息也会保存在billboards数组,以便后续的操作和管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敬 之

您的鼓励就是我持续创作的动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值