Vue笔记十二——了解vue-router点进来!!!

文章目录

  • vue-router详解
    • 认识路由
      • 什么是路由?
      • 后端路由阶段
      • 前后端分离阶段
      • 单页面富应(SPA页面)用阶段:
      • 前端路由的核心是什么呢?
      • url的hash和HTML5的history
    • vue-router基本使用
      • 演示
      • 路由的默认路径
      • HTML5的history模式
      • router-link标签补充
      • 通过代码修改路由
    • 动态路由
    • 路由懒加载(官方)
      • 把组件按组分块把组件按组分块
      • 打包文件解析
      • 懒加载使用
    • vue-router嵌套路由
      • 认识嵌套路由
      • 嵌套路由的使用
    • vue-router参数传递
      • 演示query类型:
    • vue-router导航守卫
      • 为什么要使用导航守卫?
      • 导航守卫使用
  • 回顾

vue-router详解

认识路由

  • 目前前端流行的三大框架,都有自己的路由实现:
    • Angular的ngRouter
    • React的ReactRouter
    • Vue的vue-router
  • 当然,我们的重点是vue-router
    • vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,适合用于构建单页面应用。
    • 我们可以访问其官网进行学习。
  • vue-router是基于路由组件的。
    • 路由用于设定访问路径,将路径和组件映射起来。
    • 在vue-router的单页面应用中,页面的路径的改变就是组件的切换。

什么是路由?

  • 说起路由你想起了什么?

    • 路由是一个网络工程里面的术语。
    • 路由routing,就是通过互联的网络把信息从源地址传输到目的地址的活动。
  • 没听懂?

    • 在生活中,我们有没有听过路由的概念呢?当然了,路由器嘛。
    • 路由器是做什么的?你有想过么?
    • 路由器提供了两种机制:路由转送
      • 路由是决定数据包从来源目的地的路径。
      • 转送将输入端的数据传递转移到合适的输出端
    • 路由中有一个非常重要的概念叫路由表
      • 路由表本质上是一个映射表,决定了数据包的指向。

后端路由阶段

  • 早期的网站开发整个HTML页面是由服务器来渲染的。
    • 服务器直接生产渲染好对应的HTML页面,返回给客户端进行展示。
  • 但是,一个网站,这么多页面,服务器如何处理呢?
    • 一个页面有自己对应的网址,也就是URL。
    • URL会发送到服务器,服务器会通过正则表达式对该URL进行匹配,并且最后交给一个Controller进行处理。
    • Controller进行各种处理,最终生成HTML或者数据,返回给前端。
    • 这就完成了一个IO操作。
  • 上面这种操作,就是后端路由。
    • 当我们页面中需要请求不同的路径内容时,交给服务器来进行处理,服务器渲染好整个页面,并且将页面返回给客户端。
    • 这种情况下渲染好的页面,不需要单独加载任何的js和css,可以直接交给浏览器显示,这样也有利于SEO优化。
  • 后端路由的缺点
    • 一种情况是整个页面的模块由后端人员编写和维护。
    • 另一种情况是前端开发人员如果要开发页面,需要通过PHP和Java等语言来编写页面代码。
    • 而且通常情况下HTML代码和数据以及对应的逻辑会混在一起,编写和维护都是非常糟糕的事情。

前后端分离阶段

  • 随着Ajax的出现,有了前后端分离的开发模式。
  • 后端只提供API来返回数据,前端通过Ajax获取数据,并且可以通过JavaScript将数据渲染到页面中。
  • 这样做最大的优点就是前后端责任的清晰后端专注于数据上前端专注于交互和可视化上
  • 并且当移动端(IOS/Android)出现后,后端不需要进行任何处理,依然使用之前的一套API即可。
  • 目前很多网站依然采用这种开发模式。

单页面富应(SPA页面)用阶段:

  • 其实SPA最主要的特点就是在前后端分离的基础上加了一层前端路由
  • 也就是前端来维护一套路由规则。

前端路由的核心是什么呢?

  • 改变URL,但是页面不进行整体的刷新。
  • 如何实现呢?

url的hash和HTML5的history

  • 正常情况下,我们改变URL会进行页面整体的刷新,会重新请求一些资源:

  • 使用location.hash更改url不会,而会从前端路由的映射中找到响应的组件,将其渲染:

URL的hash也就是锚点(#),本质上是改变window.loaction的href属性。

我们可以通过直接赋值location.hash来改变href,但是页面不发生刷新。

  • HTML5的history模式:pushState和replaceState:
    • 简单来讲pushState会将历史记录压入一个栈中,调用history.back()可以返回上一个url。
    • replaceState()会替换掉,无法返回。

  • HTML5的history模式:go

Vue笔记十二——了解vue-router点进来!!!_第1张图片

还有一个history.forward()等价于go(1)

vue-router基本使用

  • 因为我们已经学习了webpack,后续开发中,我们主要是通过工程化的方式进行开发的。

    • 所以在后续,我们直接使用npm来安装路由即可。

    • 步骤一:安装vue-router:

 npm install vue-router --save
  • 步骤二:在模块化工程中使用它(因为是一个插件,所以可以通过Vue.use()来安装路由功能)

    • 第一步:导入路由对象,并且调用Vue.use(VueRouter)
  • 第二布:创建路由实例,并且传入路由映射配置

    • 第三步:在Vue实例挂载创建的路由实例
  • 使用vue-router步骤:

    • 第一步:创建路由组件。
    • 第二步:配置路由映射:组件和路径映射关系。
    • 第三步:使用路由:通过

演示

  • 首先,我们创建完项目,将其中默认文件都删除掉,我们再演示router的使用,此时页面应该为空白:

Vue笔记十二——了解vue-router点进来!!!_第2张图片

Vue笔记十二——了解vue-router点进来!!!_第3张图片

  • 我们创建项目时,选择了vue-router,就相当于帮我们安装了vue-router这个插件了,我们就不需要通过npm再次安装。
  • 在src下,创建一个router的文件夹,里面放关于的路由的配置,在router文件夹下,创建index.js文件:

Vue笔记十二——了解vue-router点进来!!!_第4张图片

  • 在该index.js文件中完成相关配置

Vue笔记十二——了解vue-router点进来!!!_第5张图片

Vue笔记十二——了解vue-router点进来!!!_第6张图片

  • 创建对应组件:Home组件与About组件。

Vue笔记十二——了解vue-router点进来!!!_第7张图片

  • 配置映射关系:使组件与路径映射

Vue笔记十二——了解vue-router点进来!!!_第8张图片

  • 通过使用

Vue笔记十二——了解vue-router点进来!!!_第9张图片

Vue笔记十二——了解vue-router点进来!!!_第10张图片

路由的默认路径

  • 我们这里有一个不太好的实现:
    • 默认情况下,进入网站的首页,我们希望渲染首页的内容。
    • 但是我们的实现中,默认没有显示首页组件,必须让用户点击才可以。
  • 如果可以让路径默认跳到首页,并且渲染首页组件呢?
    • 非常简单,我们只需要配置多一个映射就可以了。

Vue笔记十二——了解vue-router点进来!!!_第11张图片

  • 配置解析:
    • 我们在routes中有配置了一个映射。
    • path配置的是根路径:/
    • redirect是重定向,也就是我们将根路径重定向到/home的路径下,这样就可以得到我们想要的结果了。

HTML5的history模式

  • 我们前面说过改变路径的方式有两种:
    • URL的hash
    • HTML5的history
    • 默认情况下,路径的改变使用的是URL的hash
  • 如果希望使用HTML5的history模式,非常简单,进行如下配置即可:

Vue笔记十二——了解vue-router点进来!!!_第12张图片

  • 效果:

Vue笔记十二——了解vue-router点进来!!!_第13张图片

Vue笔记十二——了解vue-router点进来!!!_第14张图片

router-link标签补充

  • 在前面的中,我们只使用了一个属性:to,用于指定跳转的路径。

  • 还有一些其他属性

    • tag:tag可以执行之后渲染成什么组件,比如下面的代码会被渲染成一个button元素,而不是a标签。

      <router-link to='/home' tag='button'>router-link>
      
    • replace:replace不会留下history记录,所以指定replace的情况下,后退键返回不能返回到上一个页面中。

    • active-class:当对应的路由匹配成功时,会自动给当前元素设置一个router-link-active的class设置active-class可以修改默认的名称。

      • 在进行高亮显示的导航菜单或者底部tabbar时,会使用到该类。
      • 但是通常不会修改类的属性,会直接使用默认的router-link-active即可。

Vue笔记十二——了解vue-router点进来!!!_第15张图片

通过代码修改路由

<template>
  <div id="app">
    
    <button @click="clickHome">首页button>
    <button @click="clickAbout">关于button>
    <router-view>router-view>
  div>
template>

<script>
export default {
      
  name: 'App',
  methods: {
      
    clickHome() {
      
      // 通过代码的方式修改路由 vue-router
      this.$router.push('/home');
      //或this.$router.replace()
    },
    clickAbout() {
      
      this.$router.push('/about');
    }
  }
}
script>

<style>

style>

  • 有时候,页面的跳转可能需要执行JavaScript代码,这个时候,就可以使用第二种跳转方式了。

Vue笔记十二——了解vue-router点进来!!!_第16张图片
Vue笔记十二——了解vue-router点进来!!!_第17张图片

动态路由

  • 我们经常需要把某种模式匹配到的所有路由,全都映射到同个组件。例如,我们有一个 User 组件,对于所有 ID 各不相同的用户,都要使用这个组件来渲染。
  • 那么,我们可以在 vue-router 的路由路径中使用“动态路径参数”(dynamic segment) 来达到这个效果。

Vue笔记十二——了解vue-router点进来!!!_第18张图片

Vue笔记十二——了解vue-router点进来!!!_第19张图片

Vue笔记十二——了解vue-router点进来!!!_第20张图片

Vue笔记十二——了解vue-router点进来!!!_第21张图片

路由懒加载(官方)

  • 当打包构建应用时,JavaScript 包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了。

  • 结合 Vue 的异步组件和 Webpack 的代码分割功能,轻松实现路由组件的懒加载。

  • 官方在说什么呢?

    • 首先,我们知道路由中通常会定义很多不同的页面。
    • 这个页面最后被打包在那里呢?一般情况下,是放在一个js文件中。
    • 但是,页面这么多放在一个js文件中,必然会造成这个页面非常大。
    • 如果我们一次性从服务器请求下来这个页面,可能需要花费一定的时间,甚至用户的电脑上还会出现短暂的空白。
    • 如何避免这种情况呢?使用路由的懒加载就可以了。
  • 路由懒加载做了什么

    • 路由懒加载的主要作用就是将路由对应的组件打包成一个个的js代码块。
    • 只有在这个路由被访问到的时候,才加载对应的组件。
  • 首先,可以将异步组件定义为返回一个 Promise 的工厂函数 (该函数返回的 Promise 应该 resolve 组件本身):

const Foo = () => Promise.resolve({
      /* 组件定义对象 */ })
  • 第二,在 Webpack 2 中,我们可以使用动态 import语法来定义代码分块点 (split point):
import('./Foo.vue') // 返回 Promise
  • 注意

    • 如果您使用的是 Babel,你将需要添加 syntax-dynamic-import 插件,才能使 Babel 可以正确地解析语法。
  • 结合这两者,这就是如何定义一个能够被 Webpack 自动代码分割的异步组件。

const Foo = () => import('./Foo.vue')
  • 在路由配置中什么都不需要改变,只需要像往常一样使用 Foo
const router = new VueRouter({
     
  routes: [
    {
      path: '/foo', component: Foo }
  ]
})

把组件按组分块把组件按组分块

  • 有时候我们想把某个路由下的所有组件都打包在同个异步块 (chunk) 中。只需要使用 命名 chunk,一个特殊的注释语法来提供 chunk name (需要 Webpack > 2.4)。
const Foo = () => import(/* webpackChunkName: "group-foo" */ './Foo.vue')
const Bar = () => import(/* webpackChunkName: "group-foo" */ './Bar.vue')
const Baz = () => import(/* webpackChunkName: "group-foo" */ './Baz.vue')
  • Webpack 会将任何一个异步模块与相同的块名称组合到相同的异步块中。

打包文件解析

  • 我们在之前的项目中运行npm run build打包文件,出现:

Vue笔记十二——了解vue-router点进来!!!_第22张图片

懒加载使用

Vue笔记十二——了解vue-router点进来!!!_第23张图片

  • 使用懒加载方式导入文件,再次打包文件:

Vue笔记十二——了解vue-router点进来!!!_第24张图片

vue-router嵌套路由

认识嵌套路由

  • 嵌套路由是一个很常见的功能
    • 比如在home页面中,我们希望通过home/news和home/message访问一些内容。
    • 一个路径映射一个组件,访问这两个路径也会分别渲染两个组件。

嵌套路由的使用

  • 首先我们创建两个组件HomeNews和HomeMessage:

Vue笔记十二——了解vue-router点进来!!!_第25张图片

  • 在index.js中懒加载导入这两个组件,并在Home组件下使用children属性将两个组件配置好。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JXjGraH8-1610382678421)(/Users/mac/Desktop/前端学习笔记/vue/vue笔记十二/29.jpg)]

Vue笔记十二——了解vue-router点进来!!!_第26张图片

  • 在Home组件中设置

Vue笔记十二——了解vue-router点进来!!!_第27张图片

  • 效果:

Vue笔记十二——了解vue-router点进来!!!_第28张图片

vue-router参数传递

  • 当我们从一个页面跳转到另一个页面的时候,很有可能需要给我们传递一些参数

  • 传递参数主要有两种方式:params和query

  • params类型(上方动态路由):

    • 配置路由格式:/router/:id
    • 传递的方式:在path后面跟上对应的值
    • 传递后形成的路径:/router/123,/router/abc
  • query的类型

    • 配置路由格式:/router,也就是普通配置
    • 传递的方式:对象中使用query的key: value作为传递方式
    • 传递后形成的路径:/router?id=123,/router?id=abc

演示query类型:

Vue笔记十二——了解vue-router点进来!!!_第29张图片

Vue笔记十二——了解vue-router点进来!!!_第30张图片

Vue笔记十二——了解vue-router点进来!!!_第31张图片

Vue笔记十二——了解vue-router点进来!!!_第32张图片

  • 一般大量数据由query传递。

vue-router导航守卫

为什么要使用导航守卫?

  • 我们来考虑一个需求:在一个SPA应用中,如何改变网页的标题呢?

    • 网页标题是通过</code>来显示的,但是SPA只有一个固定的HTML,切换不同的页面时,标题并不会改变。</li> <li>但是我们可以通过JavaScript来修改<code><title></code>的内容,<code>window.document.title = '新的标题'</code>。</li> <li>那么在Vue项目中,在哪里修改?什么时候修改比较合适呢?</li> </ul> </li> <li> <p>普通的修改方式:</p> <ul> <li>我们比较容易想到的修改标题的位置时每一个路由对应的组件.vue文件中。</li> <li>通过mounted声明周期函数,执行对应的代码进行修改即可。</li> <li>但是当页面比较多时,这种方式不容易维护(因为需要在多个页面执行类似的代码)</li> </ul> </li> <li> <p>有没有更好的方法呢?使用导航守卫即可。</p> </li> <li> <p>什么是导航守卫?</p> <ul> <li>vue-router提供的导航守卫只要用来监听路由的进入和离开的。</li> <li>vue-router提供了beforeEach和afterEach的钩子函数,它们会在路由即将改变前和改变后触发。</li> </ul> </li> </ul> <h3>导航守卫使用</h3> <ul> <li>我们可以利用beforeEach来完成标题的修改。 <ul> <li>首先,我们可以在钩子当中定义一些标题,可以利用meta来定义。</li> <li>其次,利用导航守卫,修改我们的标题。</li> </ul> </li> <li>导航钩子的<strong>三个参数解析</strong>: <ul> <li>to:即将要进入的目标的路由对象。</li> <li>form:当前导航即将要离开的路由对象。</li> <li>next:调用该方法后,才能进入下一个钩子。</li> </ul> </li> </ul> <p><a href="http://img.e-com-net.com/image/info8/7fd8897d9db449d2939143842d6e6bcb.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/7fd8897d9db449d2939143842d6e6bcb.jpg" alt="Vue笔记十二——了解vue-router点进来!!!_第33张图片" width="650" height="414" style="border:1px solid black;"></a></p> <p><a href="http://img.e-com-net.com/image/info8/a17edca543c249be9aeb19656de9e7d4.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/a17edca543c249be9aeb19656de9e7d4.jpg" alt="Vue笔记十二——了解vue-router点进来!!!_第34张图片" width="650" height="414" style="border:1px solid black;"></a></p> <ul> <li>补充一:如果是后置钩子,也就是afterEach,不需要主动调用next()函数。</li> <li>补充二:上面我们使用的导航守卫,被称之为<strong>全局守卫</strong>。 <ul> <li>路由独享的守卫。</li> <li>组件内的守卫。</li> </ul> </li> </ul> <h1>回顾</h1> <p>Vue笔记一——Vue安装与体验<br> Vue笔记二——Vue声明周期与模板语法<br> Vue笔记三——计算属性(computed)<br> Vue笔记四——事件监听的使用<br> Vue笔记五——条件判断与循环遍历<br> Vue笔记六——书籍购物车案例<br> Vue笔记七——v-model表单输入绑定详细介绍<br> Vue笔记八——关于组件不可不知的知识!<br> Vue笔记九——slot插槽的使用<br> Vue笔记十——webpack敲重点!!!(详解)<br> Vue笔记十一——Vue CLI相关</p> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1360465653810618368"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(vue)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1950209116165173248.htm" title="uniapp微信小程序 - 详解微信小程序平台用户授权登录全流程,uniapp v3版本中小程序端开发下用户点击登录后获取手机号/昵称/性别/头像等信息完成登录(提供完整示例代码,一键复制开箱即用)" target="_blank">uniapp微信小程序 - 详解微信小程序平台用户授权登录全流程,uniapp v3版本中小程序端开发下用户点击登录后获取手机号/昵称/性别/头像等信息完成登录(提供完整示例代码,一键复制开箱即用)</a> <span class="text-muted">十一猫咪爱养鱼</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E7%BB%84%E4%BB%B6%E4%B8%8E%E5%8A%9F%E8%83%BD%28%E5%BC%80%E7%AE%B1%E5%8D%B3%E7%94%A8%29/1.htm">前端组件与功能(开箱即用)</a><a class="tag" taget="_blank" href="/search/uniapp%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3/1.htm">uniapp常见问题解决</a><a class="tag" taget="_blank" href="/search/uniapp/1.htm">uniapp</a><a class="tag" taget="_blank" href="/search/vue3/1.htm">vue3</a><a class="tag" taget="_blank" href="/search/uniapp3%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%8E%88%E6%9D%83%E7%99%BB%E5%BD%95/1.htm">uniapp3小程序授权登录</a><a class="tag" taget="_blank" href="/search/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%99%BB%E5%BD%95%E8%8E%B7%E5%8F%96%E7%94%A8%E6%88%B7%E4%BF%A1%E6%81%AF%E6%95%99%E7%A8%8B/1.htm">微信小程序登录获取用户信息教程</a><a class="tag" taget="_blank" href="/search/%E8%8E%B7%E5%8F%96%E7%94%A8%E6%88%B7%E6%98%B5%E7%A7%B0%E6%89%8B%E6%9C%BA%E5%8F%B7%E5%A4%B4%E5%83%8F%E4%BF%A1%E6%81%AF%E7%99%BB%E5%BD%95/1.htm">获取用户昵称手机号头像信息登录</a><a class="tag" taget="_blank" href="/search/vue3%E7%89%88%E6%9C%AC%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%B9%B3%E5%8F%B0%E6%8E%88%E6%9D%83%E7%99%BB%E5%BD%95/1.htm">vue3版本小程序平台授权登录</a><a class="tag" taget="_blank" href="/search/uniap%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%AB%AF%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95%E6%B5%81%E7%A8%8B/1.htm">uniap小程序端用户登录流程</a><a class="tag" taget="_blank" href="/search/uni%E5%AE%8C%E6%95%B4%E7%9A%84%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%B9%B3%E5%8F%B0%E7%99%BB%E5%BD%95%E6%BA%90%E7%A0%81/1.htm">uni完整的小程序平台登录源码</a> <div>效果图在uniapp微信小程序端开发中,超详细实现用户授权登录完整功能源码,用户授权后获取手机号/昵称/头像/性别等,提供完整思路流程及逻辑讲解。uniappVue3和Vue2都能用,你也可以直接复制粘贴,然后改下参数放到你的项目中去就行。整体思路做功能之前,先来看一下整体流程是</div> </li> <li><a href="/article/1950191208873652224.htm" title="vue element 封装表单" target="_blank">vue element 封装表单</a> <span class="text-muted">影子信息</span> <a class="tag" taget="_blank" href="/search/vue/1.htm">vue</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>背景:在前端系统开发中,系统页面涉及到的表单组件比较多,所以进行了简单的封装。封装的包括一些Form表单组件,如下:input输入框、select下拉框、等实现效果:理论知识:表单组件官方链接:点击跳转封装组件:封装组件的思路:不封装element组件,每一个input组件绑定一个form对象,例如官网。简单封装element组件,利用for循环生成form表单的每一项el-form-item。进</div> </li> <li><a href="/article/1950179866523529216.htm" title="大学社团管理系统(11831)" target="_blank">大学社团管理系统(11831)</a> <span class="text-muted">codercode2022</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/echarts/1.htm">echarts</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/cloud/1.htm">cloud</a><a class="tag" taget="_blank" href="/search/sentinel/1.htm">sentinel</a><a class="tag" taget="_blank" href="/search/java-rocketmq/1.htm">java-rocketmq</a> <div>有需要的同学,源代码和配套文档领取,加文章最下方的名片哦一、项目演示项目演示视频二、资料介绍完整源代码(前后端源代码+SQL脚本)配套文档(LW+PPT+开题报告)远程调试控屏包运行三、技术介绍Java语言SSM框架SpringBoot框架Vue框架JSP页面Mysql数据库IDEA/Eclipse开发四、项目截图有需要的同学,源代码和配套文档领取,加文章最下方的名片哦!</div> </li> <li><a href="/article/1950164861182865408.htm" title="VUE 座位图功能+扩展" target="_blank">VUE 座位图功能+扩展</a> <span class="text-muted">NUZGNAW</span> <a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>1、通过循环画出页面座位图0"style="display:table;margin:0auto;min-height:472px;position:relative;">{{i.sign}}2、画出右下角的预览图3、编写对应js方法watch:{seatList:{handler(newVal,oldVal){if(this.seatList&&!stringBlank(this.seatLis</div> </li> <li><a href="/article/1950130692448907264.htm" title="Vue CSR 到 Nuxt 3 SSR 迁移:技术实现与问题解决实录" target="_blank">Vue CSR 到 Nuxt 3 SSR 迁移:技术实现与问题解决实录</a> <span class="text-muted">二倍速播放</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a> <div>1.迁移动机与技术选型1.1CSR架构的局限性基于Vue3和Vite构建的客户端渲染(CSR)单页应用(SPA)提供了良好的开发体验和用户交互流畅性。但是其核心局限在于:搜索引擎优化(SEO):初始HTML响应仅包含一个根div元素,实际内容由JavaScript在浏览器端动态生成。虽然主流搜索引擎(如Google)能够执行部分JavaScript,但其抓取效率和稳定性不如直接获取完整HTML。非</div> </li> <li><a href="/article/1950126282490572800.htm" title="vue项目" target="_blank">vue项目</a> <span class="text-muted">阿什么名字不会重复呢</span> <a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>vue进行配置创建vue项目vuecreateone//one就是项目名字npmielement-ui--Snpmiaxios--savenpmiecharts--save配置main.jsimportVuefrom'vue'importAppfrom'./App.vue'importrouterfrom'./router'importstorefrom'./store'importElement</div> </li> <li><a href="/article/1950119980464926720.htm" title="开发避坑短篇(7):Vue+window.print()打印实践" target="_blank">开发避坑短篇(7):Vue+window.print()打印实践</a> <span class="text-muted">帧栈</span> <a class="tag" taget="_blank" href="/search/%E9%81%BF%E5%9D%91%E6%8C%87%E5%8D%97/1.htm">避坑指南</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/elementui/1.htm">elementui</a> <div>需求vue项目中如何打印当前页面内容?解决办法使用浏览器原生APIwindow.print(),这是最简单直接的方式,通过调用window.print()方法触发浏览器打印功能‌。在vue项目中直接调用print()方法即可,无须引入任何插件。如下:functionhandlePrint(){setTimeout(_=>print(),500)}打印页面样式控制可以使用@mediaprint来控制</div> </li> <li><a href="/article/1950099932132208640.htm" title="vue2中实现leader-line-vue连线文章对应字符" target="_blank">vue2中实现leader-line-vue连线文章对应字符</a> <span class="text-muted">小莉爱编程</span> <a class="tag" taget="_blank" href="/search/vue/1.htm">vue</a><a class="tag" taget="_blank" href="/search/bug%E8%AE%B0%E5%BD%95/1.htm">bug记录</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>效果展示通过点击右边的tag,触发连接操作第一步:获取右边tag展示1.右边的tag列表展示,我这边是分为两个list嵌套的数据结构;{"人员":[{</div> </li> <li><a href="/article/1950071444180365312.htm" title="【antdv4.0FormItem更新tooltip属性引发的思考】" target="_blank">【antdv4.0FormItem更新tooltip属性引发的思考】</a> <span class="text-muted"></span> <div>北京时间2023-10-19,ant-design-vue最近发布了4.0.4-4.0.6的小版本更新,其中4.0.4新增了对Form组件中FormItem的tooltip属性支持,这个功能我觉得在后台管理场景下还是非常实用的,tooltip属性作用于FormItem中的FormItemLabel区域,用来配置提示信息,当用户不确定该行的用处或者不知道填什么内容时,可以作为input里placeh</div> </li> <li><a href="/article/1950057579757498368.htm" title="零基础入门uniapp Vue3组合式API版本" target="_blank">零基础入门uniapp Vue3组合式API版本</a> <span class="text-muted">鹤早早</span> <a class="tag" taget="_blank" href="/search/uni-app/1.htm">uni-app</a> <div>前言:小程序学习笔记,课程来源up主咸虾米_。仅记录笔记,大家想学习可以去关注他。1.已安装HBuiderX(目前是4.36版本),微信开发者工具(但还没注册小程序码),相关配置OK了。1.16相关架构学习1.pages-index-index.vuebox1box2.layout{border:1pxsolidred;.box1{border:1pxsolidgreen;}.box2{borde</div> </li> <li><a href="/article/1950055310613868544.htm" title="Vue3组合API初体验" target="_blank">Vue3组合API初体验</a> <span class="text-muted">DTcode7</span> <a class="tag" taget="_blank" href="/search/Vue%E5%AE%9E%E6%88%98%E6%8C%87%E5%8D%97/1.htm">Vue实战指南</a><a class="tag" taget="_blank" href="/search/VUE/1.htm">VUE</a><a class="tag" taget="_blank" href="/search/HTML/1.htm">HTML</a><a class="tag" taget="_blank" href="/search/web/1.htm">web</a><a class="tag" taget="_blank" href="/search/vue%E6%A1%86%E6%9E%B6/1.htm">vue框架</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>Vue3组合API初体验基本概念与作用说明示例一:使用ref创建响应式数据示例二:使用reactive创建响应式对象示例三:使用computed计算属性示例四:使用watch监听数据变化示例五:使用provide/inject进行父子组件间通信功能使用思路与实际开发技巧1.何时使用ref与reactive?2.如何在组合式API中保持逻辑的清晰?3.如何处理异步操作?随着Vue3的发布,组合式AP</div> </li> <li><a href="/article/1950053798433058816.htm" title="页面开发样式和布局入门:Vite + Vue 3 + Less" target="_blank">页面开发样式和布局入门:Vite + Vue 3 + Less</a> <span class="text-muted"></span> <div>页面开发样式和布局入门:Vite+Vue3+Less引言在现代前端开发中,样式和布局是页面开发的核心部分。随着技术的不断发展,Vite、Vue3和Less等工具和框架的出现,使得前端开发变得更加高效和灵活。然而,尽管这些工具和框架提供了强大的功能,但在实际开发中仍然会遇到各种样式和布局的问题。本文将结合Vite、Vue3和Less,详细介绍在页面开发中常见的样式和布局问题,并提供解决方案和最佳实践</div> </li> <li><a href="/article/1950005757994921984.htm" title="50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | Pokedex(宝可梦图鉴)" target="_blank">50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | Pokedex(宝可梦图鉴)</a> <span class="text-muted"></span> <div>我们继续50个小项目挑战!——Pokedex组件仓库地址:https://github.com/SunACong/50-vue-projects项目预览地址:https://50-vue-projects.vercel.app/使用Vue3结合PokeAPI来创建一个炫酷的宝可梦图鉴应用。通过这个项目,你将能够浏览前150只宝可梦的信息,包括它们的名字、类型、身高、体重以及能力等。而且,每只宝可梦</div> </li> <li><a href="/article/1950002983613820928.htm" title="前端基础知识Vue3系列 - 04(Vue3.0 所采用的 Composition Api 与 Vue2.x 使用的 Options Api 有什么不同)" target="_blank">前端基础知识Vue3系列 - 04(Vue3.0 所采用的 Composition Api 与 Vue2.x 使用的 Options Api 有什么不同)</a> <span class="text-muted"></span> <div>开始之前CompositionAPI可以说是Vue3的最大特点,那么为什么要推出CompositionApi,解决了什么问题?通常使用Vue2开发的项目,普遍会存在以下问题:代码的可读性随着组件变大而变差每一种代码复用的方式,都存在缺点TypeScript支持有限以上通过使用CompositionApi都能迎刃而解正文一、OptionsApiOptionsAPI,即大家常说的选项API,即以vue</div> </li> <li><a href="/article/1949993268787867648.htm" title="Vue3判断对象是否为空方法" target="_blank">Vue3判断对象是否为空方法</a> <span class="text-muted">滿</span> <a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>1、Object.keys()检查对象自身可枚举属性的数量:constisEmpty=Object.keys(obj).length===0;2、JSON.stringify()将对象转为JSON字符串判断:constisEmpty=JSON.stringify(obj)==='{}';3、Reflect.ownKeys()(包含Symbol属性)constisEmpty=Reflect.ownK</div> </li> <li><a href="/article/1949984445817745408.htm" title="Vue 工程化开发入门" target="_blank">Vue 工程化开发入门</a> <span class="text-muted">dawn191228</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E5%AD%A6%E4%B9%A0/1.htm">前端学习</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E6%A1%86%E6%9E%B6/1.htm">前端框架</a> <div>文章目录一、Vue工程化开发概述二、Vue脚手架三、项目运行流程四、组件化开发五、组件注册六、总结在当今的前端开发领域,Vue.js以其简洁、高效的特性受到了广泛的欢迎。Vue的工程化开发能够帮助我们更好地组织和管理项目,提高开发效率和代码质量。本文将带你了解Vue工程化开发入门知识,包括脚手架、项目运行流程、组件化以及组件注册。一、Vue工程化开发概述工程化开发是一种将软件开发过程规范化、标准化</div> </li> <li><a href="/article/1949966916076498944.htm" title="vue 使用 iFrame 嵌套带有登录的网站 登录成功 无法跳转" target="_blank">vue 使用 iFrame 嵌套带有登录的网站 登录成功 无法跳转</a> <span class="text-muted">WHY<=小氣鬼=></span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>这个问题有点好玩,当时做的时候没想起来,哎不说讲一下问题1.项目在使用iFrame标签嵌套其他,网址或者自己的网址的时候如果没有登录只是浏览是没有问题的2.如个你使用Frame标签嵌套的网址是带有登录的需要注意两个网站是不是在统一域名下面如果在就可以正常登录,如果不在的话会出现登录成功但是无法跳转的问题3.在Vue项目中使用iFrame嵌套本地.html文件,本地.html文件向父页面抛出的方法或</div> </li> <li><a href="/article/1949925685418061824.htm" title="Vue3中Axios的使用-附完整代码" target="_blank">Vue3中Axios的使用-附完整代码</a> <span class="text-muted">【本人】</span> <a class="tag" taget="_blank" href="/search/Vue/1.htm">Vue</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E6%A1%86%E6%9E%B6/1.htm">前端框架</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a> <div>前言首先介绍一下什么是axiosAxios是一个基于promise网络请求库,作用于node.js和浏览器中。它是isomorphic的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生node.jshttp模块,而在客户端(浏览端)则使用XMLHttpRequests官方网站:Axios中文文档|Axios中文网目前官方最新版本1.8.4一、Axios优势1.简单易用Axio</div> </li> <li><a href="/article/1949918371738873856.htm" title="vue 进入一个页面,然后离开这个页面他就重新加载" target="_blank">vue 进入一个页面,然后离开这个页面他就重新加载</a> <span class="text-muted">Java&Develop</span> <a class="tag" taget="_blank" href="/search/vue/1.htm">vue</a><a class="tag" taget="_blank" href="/search/vue/1.htm">vue</a> <div>vue进入一个页面,然后离开这个页面他就重新加载这个代码导致的注释即可window.location.reload();window.location.reload()是JavaScript中的一个方法,用于强制刷新当前页面(重新加载页面内容)。其作用类似于用户手动点击浏览器的刷新按钮,但可以通过代码精确触发。核心作用:刷新页面重新加载当前显示的文档(即重新请求当前URL的资源)。可选参数控制缓存</div> </li> <li><a href="/article/1949892134148567040.htm" title="在vue项目中嵌入Python项目" target="_blank">在vue项目中嵌入Python项目</a> <span class="text-muted">钱亚锋</span> <a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a> <div>在Vue项目中嵌入Python项目在现代Web开发中,前后端分离的架构已成为一种流行趋势。前端使用现代化框架(如Vue.js)来构建用户界面,而后端则使用其他语言(如Python)来处理复杂的业务逻辑和数据库交互。将Python项目嵌入到Vue项目中,可以有效利用两种语言的优势,提升开发效率。本文将介绍如何在Vue项目中集成Python项目,并附带代码示例和可视化工具。流程概述在将Python项目</div> </li> <li><a href="/article/1949891250945585152.htm" title="python和vue结合开发前端_Python--前端之路-----Vue" target="_blank">python和vue结合开发前端_Python--前端之路-----Vue</a> <span class="text-muted"></span> <div>Vue导入Vue创建vue对象加载后执行:绑定:varvm=newVue({el:"#标签的id,此处类似于选择器",属性,方法})属性:data:{属性1:"值1",属性2:值2,属性:true}方法:methods:{方法名1:function(){执行内容},方法名2:function(){执行内容}}监听:watch:{属性名:function(){监听vue属性的数据变化,属性发生修改执</div> </li> <li><a href="/article/1949890746580529152.htm" title="vue3的一些浅显用法" target="_blank">vue3的一些浅显用法</a> <span class="text-muted"></span> <div>1/父页面调用子页面相关需要在父页面引用其中FieldUserForm是子页面@success="handleUserFormSuccess"是子页面成功后回调方法父页面实现handleUserFormSuccess方法子页面相关://暴露方法给父组件defineExpose({open})需要写个方法暴露给父组件,子页面实现open方法相当于初始加载类2子页面完成任务后调用子页面相关//定义em</div> </li> <li><a href="/article/1949889359373201408.htm" title="python和vue结合开发前端,请手动配置Vue开发环境" target="_blank">python和vue结合开发前端,请手动配置Vue开发环境</a> <span class="text-muted">小六oO</span> <a class="tag" taget="_blank" href="/search/%E6%99%BA%E8%83%BD%E5%86%99%E4%BD%9C/1.htm">智能写作</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>vue怎么全局定义一个变量代替路径。原理:设置一个专用的的全局变量模块文件,模块里面定义一些变量初始状态,用exportdefault暴露出去,在里面使用Vue.prototype挂载到vue实例上面或者在其它地方需要使用时,引入该模块便可。全局变量模块文件:文件:constserverSrc='';consttoken='12345678';consthasEnter=false;constus</div> </li> <li><a href="/article/1949820012533444608.htm" title="Java+Vue 地下停车场管理系统的设计与实现" target="_blank">Java+Vue 地下停车场管理系统的设计与实现</a> <span class="text-muted">不若浮生一梦</span> <a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%AF%95%E8%AE%BE/1.htm">计算机毕设</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>一、项目简介本项目是一款基于SpringBoot+Vue开发的地下停车场管理系统,采用前后端分离架构,后端使用MyBatis操作MySQL数据库,前端使用Vue进行页面展示和用户交互。系统涵盖车位监控、车辆登记、订单生成与结算、在线支付、公告通知、留言反馈、用户积分管理等模块,支持用户端和管理员端的全流程停车管理,适用于中小型停车场数字化转型。项目定位:提升停车场管理效率与用户体验,实现“高效停车</div> </li> <li><a href="/article/1949814878260752384.htm" title="SSM+Vue共享充电宝管理系统 充电宝投放管理系统 共享充电宝维护管理系统Java" target="_blank">SSM+Vue共享充电宝管理系统 充电宝投放管理系统 共享充电宝维护管理系统Java</a> <span class="text-muted">计算机程序老哥</span> <div>作者主页:计算机毕业设计老哥有问题可以主页问我一、开发介绍1.1开发环境开发语言:Java数据库:MySQL系统架构:B/S后端:SSM(Spring+SpringMVC+Mybatis)前端:Vue工具:IDEA或者Eclipse,JDK1.8,Maven二、系统介绍2.1图片展示注册登录页面:登陆前端页面功能:首页、合作商户、充电宝投放、公告栏、个人中心、后台管理首页.png充电宝投放.png</div> </li> <li><a href="/article/1949757224490430464.htm" title="Vue 浏览器本地存储" target="_blank">Vue 浏览器本地存储</a> <span class="text-muted">yume_sibai</span> <a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a> <div>一、webStorage1.存储内容大小一般支持5MB左右(不同浏览器可能不一样)。2.浏览器通过Window.sessionStorage和Window.localStorage属性来实现本地存储机制。3.相关API:(1).xxxxStorage.setItem('Key','value'):该方法接受一个键和值作为参数,会把键值对添加到存储中,如果键名存在,则更新其对应的值。(2).xxxx</div> </li> <li><a href="/article/1949756465313017856.htm" title="【web应用】基于Vue3和Spring Boot的课程管理前后端数据交互过程" target="_blank">【web应用】基于Vue3和Spring Boot的课程管理前后端数据交互过程</a> <span class="text-muted">JosieBook</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/Java%E5%85%A8%E6%A0%88/1.htm">Java全栈</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/%E4%BA%A4%E4%BA%92/1.htm">交互</a> <div>文章目录一、系统架构概述二、前端数据交互流程分析1.组件初始化与数据请求2.API请求封装3.查询参数处理三、后端数据处理流程1.控制器接收请求2.分页处理机制3.服务层业务处理四、典型操作的数据流1.查询操作数据流2.新增操作数据流3.删除操作数据流五、关键技术点解析1.前端表单验证2.后端权限控制3.数据导出实现六、完整交互示例:新增课程七、完整代码八、总结与优化建议1.当前实现特点2.可优化</div> </li> <li><a href="/article/1949756466718109696.htm" title="【第六节】方法与事件处理器" target="_blank">【第六节】方法与事件处理器</a> <span class="text-muted">枫,为落叶</span> <a class="tag" taget="_blank" href="/search/vue/1.htm">vue</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a> <div>方法与事件处理器方法处理器可以用v-on指令监听DOM事件:Greet绑定一个单击事件处理器到一个方法greet。下面在Vue实例中定义这个方法varvm=newVue({el:'#example',data:{name:'Vue.js'//在'methods’对象中定义方法methods:{greet:function(event)(//方法内'this”指向vmalert('Hello+thi</div> </li> <li><a href="/article/1949740580871401472.htm" title="IntelliJ IDEA 高效开发指南:从基础操作到高级技巧" target="_blank">IntelliJ IDEA 高效开发指南:从基础操作到高级技巧</a> <span class="text-muted">zqmgx13291</span> <a class="tag" taget="_blank" href="/search/intellij-idea/1.htm">intellij-idea</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/ide/1.htm">ide</a> <div>一、IDEA概述与环境配置1.1IDEA的核心优势智能代码辅助:基于上下文的代码补全(Ctrl+Space)、方法参数提示、错误实时检测全栈开发支持:内置Java/Python/JavaScript等20+语言支持,框架集成(SpringBoot/Vue/React)工具链集成:版本控制(Git/SVN)、数据库(MySQL/PostgreSQL)、容器(Docker/K8s)一站式开发性能优化:</div> </li> <li><a href="/article/1949736674896441344.htm" title="简约时装网店网站开发#网页制作 #网页设计 #网站建设" target="_blank">简约时装网店网站开发#网页制作 #网页设计 #网站建设</a> <span class="text-muted">黄菊华老师</span> <a class="tag" taget="_blank" href="/search/%E7%BD%91%E9%A1%B5%E6%A8%A1%E6%9D%BF/1.htm">网页模板</a><a class="tag" taget="_blank" href="/search/%E7%AE%80%E7%BA%A6%E6%97%B6%E8%A3%85%E7%BD%91%E5%BA%97/1.htm">简约时装网店</a> <div>博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注网站制作、小程序开发、软件开发和大学生毕业设计教育、辅导。所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩,提供核心代码讲解,答辩指导。项目配有对应开发文档、开题报告、任务书、PPT等,提供毕业设计论文辅导。项目都录了发布和功能操作演示视频</div> </li> <li><a href="/article/70.htm" title="PHP如何实现二维数组排序?" target="_blank">PHP如何实现二维数组排序?</a> <span class="text-muted">IT独行者</span> <a class="tag" taget="_blank" href="/search/%E4%BA%8C%E7%BB%B4%E6%95%B0%E7%BB%84/1.htm">二维数组</a><a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/%E6%8E%92%E5%BA%8F%E3%80%80/1.htm">排序 </a> <div>二维数组在PHP开发中经常遇到,但是他的排序就不如一维数组那样用内置函数来的方便了,(一维数组排序可以参考本站另一篇文章【PHP中数组排序函数详解汇总】)。二维数组的排序需要我们自己写函数处理了,这里UncleToo给大家分享一个PHP二维数组排序的函数: 代码: functionarray_sort($arr,$keys,$type='asc'){ $keysvalue= $new_arr</div> </li> <li><a href="/article/197.htm" title="【Hadoop十七】HDFS HA配置" target="_blank">【Hadoop十七】HDFS HA配置</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a> <div>基于Zookeeper的HDFS HA配置主要涉及两个文件,core-site和hdfs-site.xml。   测试环境有三台 hadoop.master hadoop.slave1 hadoop.slave2   hadoop.master包含的组件NameNode, JournalNode, Zookeeper,DFSZKFailoverController</div> </li> <li><a href="/article/324.htm" title="由wsdl生成的java vo类不适合做普通java vo" target="_blank">由wsdl生成的java vo类不适合做普通java vo</a> <span class="text-muted">darrenzhu</span> <a class="tag" taget="_blank" href="/search/VO/1.htm">VO</a><a class="tag" taget="_blank" href="/search/wsdl/1.htm">wsdl</a><a class="tag" taget="_blank" href="/search/webservice/1.htm">webservice</a><a class="tag" taget="_blank" href="/search/rpc/1.htm">rpc</a> <div>开发java webservice项目时,如果我们通过SOAP协议来输入输出,我们会利用工具从wsdl文件生成webservice的client端类,但是这里面生成的java data model类却不适合做为项目中的普通java vo类来使用,当然有一中情况例外,如果这个自动生成的类里面的properties都是基本数据类型,就没问题,但是如果有集合类,就不行。原因如下: 1)使用了集合如Li</div> </li> <li><a href="/article/451.htm" title="JAVA海量数据处理之二(BitMap)" target="_blank">JAVA海量数据处理之二(BitMap)</a> <span class="text-muted">周凡杨</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/bitmap/1.htm">bitmap</a><a class="tag" taget="_blank" href="/search/bitset/1.htm">bitset</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE/1.htm">数据</a> <div>       路漫漫其修远兮,吾将上下而求索。想要更快,就要深入挖掘 JAVA 基础的数据结构,从来分析出所编写的 JAVA 代码为什么把内存耗尽,思考有什么办法可以节省内存呢? 啊哈!算法。这里采用了 BitMap 思想。   首先来看一个实验: 指定 VM 参数大小: -Xms256m -Xmx540m </div> </li> <li><a href="/article/578.htm" title="java类型与数据库类型" target="_blank">java类型与数据库类型</a> <span class="text-muted">g21121</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>很多时候我们用hibernate的时候往往并不是十分关心数据库类型和java类型的对应关心,因为大多数hbm文件是自动生成的,但有些时候诸如:数据库设计、没有生成工具、使用原始JDBC、使用mybatis(ibatIS)等等情况,就会手动的去对应数据库与java的数据类型关心,当然比较简单的数据类型即使配置错了也会很快发现问题,但有些数据类型却并不是十分常见,这就给程序员带来了很多麻烦。 &nb</div> </li> <li><a href="/article/705.htm" title="Linux命令" target="_blank">Linux命令</a> <span class="text-muted">510888780</span> <a class="tag" taget="_blank" href="/search/linux%E5%91%BD%E4%BB%A4/1.htm">linux命令</a> <div>系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 cat /proc/cpuinfo 显示C</div> </li> <li><a href="/article/832.htm" title="java常用JVM参数" target="_blank">java常用JVM参数</a> <span class="text-muted">墙头上一根草</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/jvm%E5%8F%82%E6%95%B0/1.htm">jvm参数</a> <div>-Xms:初始堆大小,默认为物理内存的1/64(<1GB);默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制 -Xmx:最大堆大小,默认(MaxHeapFreeRatio参数可以调整)空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制 -Xmn:新生代的内存空间大小,注意:此处的大小是(eden+ 2</div> </li> <li><a href="/article/959.htm" title="我的spring学习笔记9-Spring使用工厂方法实例化Bean的注意点" target="_blank">我的spring学习笔记9-Spring使用工厂方法实例化Bean的注意点</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/Spring+3/1.htm">Spring 3</a> <div>方法一: <bean id="musicBox" class="onlyfun.caterpillar.factory.MusicBoxFactory" factory-method="createMusicBoxStatic"></bean> 方法二: </div> </li> <li><a href="/article/1086.htm" title="mysql查询性能优化之二" target="_blank">mysql查询性能优化之二</a> <span class="text-muted">annan211</span> <a class="tag" taget="_blank" href="/search/UNION/1.htm">UNION</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E6%9F%A5%E8%AF%A2%E4%BC%98%E5%8C%96/1.htm">查询优化</a><a class="tag" taget="_blank" href="/search/%E7%B4%A2%E5%BC%95%E4%BC%98%E5%8C%96/1.htm">索引优化</a> <div> 1 union的限制 有时mysql无法将限制条件从外层下推到内层,这使得原本能够限制部分返回结果的条件无法应用到内层 查询的优化上。 如果希望union的各个子句能够根据limit只取部分结果集,或者希望能够先排好序在 合并结果集的话,就需要在union的各个子句中分别使用这些子句。 例如 想将两个子查询结果联合起来,然后再取前20条记录,那么mys</div> </li> <li><a href="/article/1213.htm" title="数据的备份与恢复" target="_blank">数据的备份与恢复</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%81%A2%E5%A4%8D/1.htm">数据恢复</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%A4%87%E4%BB%BD/1.htm">数据备份</a> <div> 数据的备份与恢复的方式有: 表,方案 ,数据库;     数据的备份: 导出到的常见命令; 参数 说明 USERID 确定执行导出实用程序的用户名和口令 BUFFER 确定导出数据时所使用的缓冲区大小,其大小用字节表示 FILE 指定导出的二进制文</div> </li> <li><a href="/article/1340.htm" title="线程组" target="_blank">线程组</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">多线程</a><a class="tag" taget="_blank" href="/search/thread/1.htm">thread</a><a class="tag" taget="_blank" href="/search/java%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">java多线程</a><a class="tag" taget="_blank" href="/search/%E7%BA%BF%E7%A8%8B%E7%BB%84/1.htm">线程组</a> <div>有些程序包含了相当数量的线程。这时,如果按照线程的功能将他们分成不同的类别将很有用。        线程组可以用来同时对一组线程进行操作。        创建线程组:ThreadGroup g = new ThreadGroup(groupName);  &nbs</div> </li> <li><a href="/article/1467.htm" title="top命令找到占用CPU最高的java线程" target="_blank">top命令找到占用CPU最高的java线程</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/top/1.htm">top</a> <div>上次分析系统中占用CPU高的问题,得到一些使用Java自身调试工具的经验,与大家分享。 (1)使用top命令找出占用cpu最高的JAVA进程PID:28174 (2)如下命令找出占用cpu最高的线程 top -Hp 28174 -d 1 -n 1 32694 root 20 0 3249m 2.0g 11m S 2 6.4 3:31.12 java </div> </li> <li><a href="/article/1594.htm" title="【持久化框架MyBatis3四】MyBatis3一对一关联查询" target="_blank">【持久化框架MyBatis3四】MyBatis3一对一关联查询</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/Mybatis3/1.htm">Mybatis3</a> <div>  当两个实体具有1对1的对应关系时,可以使用One-To-One的进行映射关联查询   One-To-One示例数据 以学生表Student和地址信息表为例,每个学生都有都有1个唯一的地址(现实中,这种对应关系是不合适的,因为人和地址是多对一的关系),这里只是演示目的   学生表   CREATE TABLE STUDENTS ( </div> </li> <li><a href="/article/1721.htm" title="C/C++图片或文件的读写" target="_blank">C/C++图片或文件的读写</a> <span class="text-muted">bitcarter</span> <a class="tag" taget="_blank" href="/search/%E5%86%99%E5%9B%BE%E7%89%87/1.htm">写图片</a> <div>先看代码: /*strTmpResult是文件或图片字符串 * filePath文件需要写入的地址或路径 */ int writeFile(std::string &strTmpResult,std::string &filePath) { int i,len = strTmpResult.length(); unsigned cha</div> </li> <li><a href="/article/1848.htm" title="nginx自定义指定加载配置" target="_blank">nginx自定义指定加载配置</a> <span class="text-muted">ronin47</span> <div>进入 /usr/local/nginx/conf/include 目录,创建 nginx.node.conf 文件,在里面输入如下代码: upstream nodejs { server 127.0.0.1:3000; #server 127.0.0.1:3001; keepalive 64; } server { liste</div> </li> <li><a href="/article/1975.htm" title="java-71-数值的整数次方.实现函数double Power(double base, int exponent),求base的exponent次方" target="_blank">java-71-数值的整数次方.实现函数double Power(double base, int exponent),求base的exponent次方</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/double/1.htm">double</a> <div> public class Power { /** *Q71-数值的整数次方 *实现函数double Power(double base, int exponent),求base的exponent次方。不需要考虑溢出。 */ private static boolean InvalidInput=false; public static void main(</div> </li> <li><a href="/article/2102.htm" title="Android四大组件的理解" target="_blank">Android四大组件的理解</a> <span class="text-muted">Cb123456</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/%E5%9B%9B%E5%A4%A7%E7%BB%84%E4%BB%B6%E7%9A%84%E7%90%86%E8%A7%A3/1.htm">四大组件的理解</a> <div> 分享一下,今天在Android开发文档-开发者指南中看到的:                            App components are the essential building blocks of an Android </div> </li> <li><a href="/article/2229.htm" title="[宇宙与计算]涡旋场计算与拓扑分析" target="_blank">[宇宙与计算]涡旋场计算与拓扑分析</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97/1.htm">计算</a> <div>      怎么阐述我这个理论呢? 。。。。。。。。。       首先: 宇宙是一个非线性的拓扑结构与涡旋轨道时空的统一体。。。。       我们要在宇宙中寻找到一个适合人类居住的行星,时间非常重要,早一个刻度和晚一个刻度,这颗行星的</div> </li> <li><a href="/article/2356.htm" title="同一个Tomcat不同Web应用之间共享会话Session" target="_blank">同一个Tomcat不同Web应用之间共享会话Session</a> <span class="text-muted">cwqcwqmax9</span> <a class="tag" taget="_blank" href="/search/session/1.htm">session</a> <div>实现两个WEB之间通过session 共享数据 查看tomcat 关于 HTTP Connector 中有个emptySessionPath 其解释如下: If set to true, all paths for session cookies will be set to /. This can be useful for portlet specification impleme</div> </li> <li><a href="/article/2483.htm" title="springmvc Spring3 MVC,ajax,乱码" target="_blank">springmvc Spring3 MVC,ajax,乱码</a> <span class="text-muted">dashuaifu</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/mvc/1.htm">mvc</a><a class="tag" taget="_blank" href="/search/Ajax/1.htm">Ajax</a> <div>  springmvc Spring3 MVC @ResponseBody返回,jquery ajax调用中文乱码问题解决   Spring3.0 MVC @ResponseBody 的作用是把返回值直接写到HTTP response body里。具体实现AnnotationMethodHandlerAdapter类handleResponseBody方法,具体实</div> </li> <li><a href="/article/2610.htm" title="搭建WAMP环境" target="_blank">搭建WAMP环境</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/wamp/1.htm">wamp</a> <div>这里先解释一下WAMP是什么意思。W:windows,A:Apache,M:MYSQL,P:PHP。也就是说本文说明的是在windows系统下搭建以apache做服务器、MYSQL为数据库的PHP开发环境。      工欲善其事,必须先利其器。因为笔者的系统是WinXP,所以下文指的系统均为此系统。笔者所使用的Apache版本为apache_2.2.11-</div> </li> <li><a href="/article/2737.htm" title="yii2 使用raw http request" target="_blank">yii2 使用raw http request</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/http/1.htm">http</a> <div>Parses a raw HTTP request using yii\helpers\Json::decode()   To enable parsing for JSON requests you can configure yii\web\Request::$parsers using this class: 'request' =&g</div> </li> <li><a href="/article/2864.htm" title="Quartz-1.8.6 理论部分" target="_blank">Quartz-1.8.6 理论部分</a> <span class="text-muted">eksliang</span> <a class="tag" taget="_blank" href="/search/quartz/1.htm">quartz</a> <div>转载请出自出处:http://eksliang.iteye.com/blog/2207691 一.概述 基于Quartz-1.8.6进行学习,因为Quartz2.0以后的API发生的非常大的变化,统一采用了build模式进行构建; 什么是quartz?   答:简单的说他是一个开源的java作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。并且还能和Sp</div> </li> <li><a href="/article/2991.htm" title="什么是POJO?" target="_blank">什么是POJO?</a> <span class="text-muted">gupeng_ie</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/POJO/1.htm">POJO</a><a class="tag" taget="_blank" href="/search/%E6%A1%86%E6%9E%B6/1.htm">框架</a><a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a> <div>POJO--Plain Old Java Objects(简单的java对象)   POJO是一个简单的、正规Java对象,它不包含业务逻辑处理或持久化逻辑等,也不是JavaBean、EntityBean等,不具有任何特殊角色和不继承或不实现任何其它Java框架的类或接口。   POJO对象有时也被称为Data对象,大量应用于表现现实中的对象。如果项目中使用了Hiber</div> </li> <li><a href="/article/3118.htm" title="jQuery网站顶部定时折叠广告" target="_blank">jQuery网站顶部定时折叠广告</a> <span class="text-muted">ini</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a> <div>效果体验:http://hovertree.com/texiao/jquery/4.htmHTML文件代码: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>网页顶部定时收起广告jQuery特效 - HoverTree<</div> </li> <li><a href="/article/3245.htm" title="Spring boot内嵌的tomcat启动失败" target="_blank">Spring boot内嵌的tomcat启动失败</a> <span class="text-muted">kane_xie</span> <a class="tag" taget="_blank" href="/search/spring+boot/1.htm">spring boot</a> <div>根据这篇guide创建了一个简单的spring boot应用,能运行且成功的访问。但移植到现有项目(基于hbase)中的时候,却报出以下错误:     SEVERE: A child container failed during start java.util.concurrent.ExecutionException: org.apache.catalina.Lif</div> </li> <li><a href="/article/3372.htm" title="leetcode: sort list" target="_blank">leetcode: sort list</a> <span class="text-muted">michelle_0916</span> <a class="tag" taget="_blank" href="/search/Algorithm/1.htm">Algorithm</a><a class="tag" taget="_blank" href="/search/linked+list/1.htm">linked list</a><a class="tag" taget="_blank" href="/search/sort/1.htm">sort</a> <div>Sort a linked list in O(n log n) time using constant space complexity. ====analysis======= mergeSort for singly-linked list  ====code=======   /** * Definition for sin</div> </li> <li><a href="/article/3499.htm" title="nginx的安装与配置,中途遇到问题的解决" target="_blank">nginx的安装与配置,中途遇到问题的解决</a> <span class="text-muted">qifeifei</span> <a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a> <div>我使用的是ubuntu13.04系统,在安装nginx的时候遇到如下几个问题,然后找思路解决的,nginx 的下载与安装   wget http://nginx.org/download/nginx-1.0.11.tar.gz tar zxvf nginx-1.0.11.tar.gz ./configure make make install   安装的时候出现</div> </li> <li><a href="/article/3626.htm" title="用枚举来处理java自定义异常" target="_blank">用枚举来处理java自定义异常</a> <span class="text-muted">tcrct</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/enum/1.htm">enum</a><a class="tag" taget="_blank" href="/search/exception/1.htm">exception</a> <div>在系统开发过程中,总少不免要自己处理一些异常信息,然后将异常信息变成友好的提示返回到客户端的这样一个过程,之前都是new一个自定义的异常,当然这个所谓的自定义异常也是继承RuntimeException的,但这样往往会造成异常信息说明不一致的情况,所以就想到了用枚举来解决的办法。 1,先创建一个接口,里面有两个方法,一个是getCode, 一个是getMessage public </div> </li> <li><a href="/article/3753.htm" title="erlang supervisor分析" target="_blank">erlang supervisor分析</a> <span class="text-muted">wudixiaotie</span> <a class="tag" taget="_blank" href="/search/erlang/1.htm">erlang</a> <div>当我们给supervisor指定需要创建的子进程的时候,会指定M,F,A,如果是simple_one_for_one的策略的话,启动子进程的方式是supervisor:start_child(SupName, OtherArgs),这种方式可以根据调用者的需求传不同的参数给需要启动的子进程的方法。和最初的参数合并成一个数组,A ++ OtherArgs。那么这个时候就有个问题了,既然参数不一致,那</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>