当前位置: 首页 > wzjs >正文

济宁做企业网站游戏优化大师官方下载

济宁做企业网站,游戏优化大师官方下载,网站注册局,台州网站建设制作使用 CDN 开发 Vue3 使用 CDN 是入门 Vue 的好方法之一,适用于小型项目或简单页面增强、渐进式增强传统网站、修改老项目、教育和学习目的。 这种方式不需要复杂的构建工具配置,减少了环境搭建的时间,使得开发者可以迅速开始编码。简单的用…

使用 CDN 开发 Vue3

使用 CDN 是入门 Vue 的好方法之一,适用于小型项目或简单页面增强渐进式增强传统网站修改老项目教育和学习目的

这种方式不需要复杂的构建工具配置,减少了环境搭建的时间,使得开发者可以迅速开始编码。

简单的用户列表页

用户列表页一般有 搜索列表分页 等部分。

假设已有获取用户列表的 路由控制器

Route::get('getUserList', "UserController@getUserList");public function getUserList(Request $request){$query = User::query();if ($request->has('nickname') && !empty($request->input('nickname'))) {$query->where('nickname', 'like', '%' . $request->input('nickname') . '%');}if ($request->has('status') && !empty($request->input('status'))) {$query->where('status', $request->input('status'));}$users = $query->orderBy('id', 'desc')->paginate(5);return response()->json($users);
}

页面 list.blade.php:

<!-- 导入Vue3文件 -->
<script src="{{asset('/js/vue.global.js')}}"></script><!-- 防止闪烁现象 -->
<style type="text/css">[v-cloak] {display: none;}
</style><div id="app" v-cloak><!-- 搜索部分 --><!-- @submit:Vue中用于监听HTML表单提交事件的简写形式(原生javascript里的onsubmit)。当用户点击提交按钮或者按下回车键时触发该事件。--><!--.prevent 是一个事件修饰符,它会调用事件对象的 event.preventDefault()方法。这意味着它可以阻止元素的默认行为。对于表单来说,默认行为通常是页面刷新并尝试将数据发送到服务器(基于表单的action属性)。如果你正在构建一个单页应用(SPA),你可能不希望这种行为发生,而是希望通过AJAX请求来处理表单提交。--><form @submit.prevent="searchUsers">昵称:<input type="text" class="form-control" v-model="search.nickname">状态:<select class="form-select" v-model="search.status"><option value=""></option><option value="1">正常</option><option value="2">锁定</option></select><button type="submit" class="btn btn-primary">搜索</button></form><!-- 列表渲染 --><!-- 加载状态 --><div v-if="loading">正在加载数据...</div><!-- 错误提示 --><div v-else-if="error">@{{ error }}</div><table class="table" v-else><thead><tr><th scope="col">昵称</th><th scope="col">状态</th></tr></thead><tbody><tr v-for="user in users" :key="user.id"><td>@{{user.nickname}}</td><td v-html="user.status === 1 ? badgeHtml('bg-success', '正常') : badgeHtml('bg-secondary', '锁定')"></td></tr></tbody></table><!-- 分页部分 --><nav v-if="!loading && users.length"><ul class="pagination"><li class="page-item"><!-- 在Vue.js中,:是v-bind的简写形式,用于动态绑定HTML属性或组件prop到Vue实例的数据。当你看到:disabled="current_page === 1"这样的用法时,它实际上是在利用Vue的响应式系统来动态地设置HTML元素的disabled属性。任何合法的HTML属性或自定义属性都可以通过 v-bind来动态绑定。比如常用的有 :class,:style,:href,:src,:alt,:value,:checked,:selected--><a class="page-link" href="javascript:;" @click="goToPage(current_page - 1)" :disabled="current_page === 1">上一页</a></li><li class="page-item" v-for="page in pages" :key="page" :class="{ active: current_page === page }"><a class="page-link" href="javascript:;" @click="goToPage(page)">@{{ page }}</a></li><li class="page-item"><a class="page-link" href="javascript:;" @click="goToPage(current_page + 1)" :disabled="current_page === last_page">下一页</a></li></ul></nav>
</div><script type="module">const { createApp, ref, onMounted, computed } = Vueconst app = createApp({// 更改默认插值符号,防止与blade模板的{{}}冲突delimiters: ['@{{', '}}'],setup() {// 用户列表const users = ref([]);// 列表渲染前先显示加载中const loading = ref(true);// 网络请求出错时显示错误信息const error = ref(null);// 分页部分const current_page = ref(1);// 当前页码const last_page = ref(1); // 总页数const visiblePagesCount = 5;// 要显示的页码数量(比如上一页与下一页之间的那块儿)// 搜索条件const search = ref({nickname: '', status: ''});// 获取用户列表const fetchData = async (page = 1) => {try {let queryParams = new URLSearchParams();// 添加页码queryParams.append('page', page);// 添加搜索条件if (search.value.nickname) queryParams.append('nickname', search.value.nickname);if (search.value.status) queryParams.append('status', search.value.status);// 获取数据const res = await fetch(`getUserList?${queryParams.toString()}`);if (!res.ok) throw new Error('网络错误');const data = await res.json();// laravel返回分页格式的数据对象,因此再.datausers.value = data.data;// 设置分页参数last_page.value = data.last_page;current_page.value = data.current_page;}catch(err){// 显示错误信息error.value = err.message;}finally {// 不管成功或失败,都把页面的“加载中”去掉loading.value = false;}}// 计算属性:上一页与下一页之间的那块儿const pages = computed(() => {const total = last_page.value;const currentPage = current_page.value;const pageCount = visiblePagesCount;let start = Math.max(1, currentPage - Math.floor(pageCount / 2));let end = start + pageCount - 1;if (end > total) {end = total;start = Math.max(1, end - pageCount + 1);}const result = [];for (let i = start; i <= end; i++) {result.push(i);}return result;})// 去第N页const goToPage = (page) => {if (page >= 1 && page <= last_page.value) {fetchData(page);}};// 点击搜索按钮提交时const searchUsers = () => {current_page.value = 1; // 重置当前页为第一页fetchData(); // 根据新的搜索条件重新获取数据};// 如果使用bootstraps之类的,由于vue的{{}}只能是js表达式,因此不能写html代码。此时可以用v-html来绑定使用const badgeHtml = (className, text) => {return `<span class="badge ${className}">${text}</span>`;};// 页面加载时获取数据onMounted(() => {fetchData();});return {users,loading,error,current_page,last_page,goToPage,pages,search,searchUsers,badgeHtml};}})// 告诉Vue忽略'content'标签app.config.compilerOptions.isCustomElement = tag => tag === 'content'; app.mount('#app')
</script>
http://www.dtcms.com/wzjs/57498.html

相关文章:

  • 网站开发侵权惠州百度seo地址
  • 个人站长做网站需要多少钱淘宝seo推广优化
  • 百度小程序跟做网站最新病毒感染
  • 网站建设的目的及功能定位是啥seo外包服务项目
  • 网页设计难还是网站建设南国内网站建设公司
  • 网站 要强化内容建设关键词林俊杰mp3
  • 廊坊网站制作设计湘潭seo公司
  • 如何给网站做2维码国际婚恋网站排名
  • 做汽配网站网站免费制作
  • 定制专业网站公司网站制作模板
  • 二级a做爰片免费视网站营销技巧培训
  • 上海高端建设网站大片网站推广
  • 涟源市建设局网站注册城乡规划师教材
  • 莒县网站制作百度贴吧怎么做推广
  • 淄博做网站小程序的公司网络营销推广方案策划
  • 模板网站配置十大品牌营销策划公司
  • 山东金融行业网站开发品牌营销经典案例
  • 中山做网站推广公司提高工作效率8个方法
  • 合肥做网站开发多少钱电商网站怎样优化
  • 果洛营销网站建设服务百度商务合作联系
  • 网站推广项目郑州做网站推广
  • 上海公司注册流程和费用网站seo视频
  • 网站的专题怎么做百度seo收费
  • 苏州网站建设公司电话东莞建设企业网站
  • 男女做那事是什 网站seo整站优化费用
  • 怎么做关于易烊千玺的网站网站查询关键词排名软件
  • 地方门户网站系统有哪些创建网站的公司
  • 市场营销公司网站seo优化培训
  • 东莞网站案例营销网站如何做优化排名
  • 厦门市建设局查询保障摇号网站东莞seo网络推广专