基于 vue3 + webpack 5 + sass+ vw 适配方案+axios 封装,从0构建手机端模板脚手架

Webpack5正式发布也有很长长长一段时间了,上手了一段时候后发现真香。webpack5的新特性使得我们在配置上比以往版本更加方便了,构建速度也有了质的飞跃。本文着重为大家讲解从 0 到 1 搭建 vue3 + webpack 5开发环境的过程中遇到的疑问。

项目地址: webpack5-vue3

demo地址: https://zhouyupeng.github.io/webpack5-vue3/#/

先看一下配置好的项目目录结构

├─build
│  ├─webpack.base.conf.js 
│  ├─webpack.dev.conf.js   
│  ├─webpack.prod.conf.js 
│  ├─webpack.rules.conf.js 
├─node_modules
├─public
|  |-index.html
└─src
|  ├─api
|  ├─assets
|  ├─components
|  ├─filters
|  ├─plugins
|  ├─router
|  ├─store
|  ├─style
|  ├─utils
|  ├─views
|  |-App.vue
|  |-main.ts
|-.env.dev
|-.env.test
|-.env.prod
|-.gitigore
|-babel.config.js
|-package.json
|-postcss.config.js

接下来,我们使用 Webpack5 从0搭建一个完整的 Vue3 的开发环境!

环境(environment)

webpack 5 运行于 Node.js v10.13.0+ 的版本。

本文涉及到依赖的版本号

├── webpack           5.43
├── webpack-cli       4.7.2
├── node              14.17.0

初始化目录

第一步: 创建目录并且初始化 package.json

mkdir webpack5-vue3 && cd webpack5-vue3
yarn init -y

第二步: 安装webpack三件套

yarn add webpack webpack-cli webpack-dev-server -D

注意:

  1. -D 等价于 --save-dev; 开发环境时所需依赖
  2. -S 等价于 --save; 生产环境时所需依赖

第三步:初始化目录和文件

  • 创建./build/webpack.config.js文件和./src/main.js文件并且写上webpack打包配置代码
// webpack.config.js
const path = require('path');
module.exports = {
    entry: path.resolve(__dirname, '../src/main.js'), // 入口
    output: {
        path: path.resolve(__dirname, '../dist'),
        filename: './js/[name].[chunkhash].js',
        publicPath: './',
    },
}
  • 在package.json的scripts里写上打包命令
"build": "webpack --config ./build/webpack.config.js --mode production --progress --color -w"

参数详解

  • –config或-c: 提供 webpack 配置文件的路径,例如 ./webpack.config.js
  • –mode:配置环境也可写在配置文件里 不配置mode 默认production模式打包
  • –progress: 启用在构建过程中打印编译进度
  • –color: 启用控制台颜色
  • –watch或-w: 监听文件变化

运行打包脚本yarn build看到webpack运行并且打包成功了。

配置开发服务器

webpack5 + webpack-cli4 启动开发服务器命令与之前有所变化,从 webpack-dev-server 转变为 webpack serve,

"build": "webpack serve --config ./build/webpack.config.js --mode development --progress --color",

运行起来后出现了另外的问题。改了代码控制台重新编译,但是热更新无效。

看一下无效的启动和有效启动之后的 network 截图对比:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QOTs8jF9-1627564441599)(https://card.h5551.com/gPONlR.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vQQTHdw2-1627564441603)(https://card.h5551.com/gPxobq.png)]

网上找了一圈,说删除 package.json 里的 browserslist可以热更,截止我写这篇文章安装的依赖版本时不行,
最后在issues看到解决办法,按照官方给出的解释好像只会在[email protected]中修复这个问题,这里安装beta最新版本yarn add webpack-dev-server@lastest -D,运行代码发现热更新成功。
安装webpack-dev-server 4.X版本后配置发生了很多改变,废弃了很多以前的配置
4.x配置点我点我或者看这里

分环境打包

在我们平时项目开发中,一般都会有:开发环境、测试环境、预发布环境和生产环境。现在来对 webpack 的配置文件进行环境拆分。

拆分文件
├─build
│  ├─webpack.base.conf.js   //公共配置
│  ├─webpack.dev.conf.js    //mode为development配置
│  ├─webpack.prod.conf.js   //mode为production配置
│  ├─webpack.rules.conf.js  //loader配置
配置环境变量

使用dotenv来按需加载不同的环境变量,VUE CLI3的环境变量也是使用的这个插件

  • 安装dotenv插件
yarn add dotenv -D
  • 修改webpack.base.conf.js
//...
const envMode = process.env.envMode
require('dotenv').config({ path: `.env.${envMode}` })
// 正则匹配以 VUE_APP_ 开头的 变量
const prefixRE = /^VUE_APP_/
let env = {}
// 只有 NODE_ENV,BASE_URL 和以 VUE_APP_ 开头的变量将通过 webpack.DefinePlugin 静态地嵌入到客户端侧的代码中
for (const key in process.env) {
    if (key == 'NODE_ENV' || key == 'BASE_URL' || prefixRE.test(key)) {
        env[key] = JSON.stringify(process.env[key])
    }
}

plugins: [
    //...
    new webpack.DefinePlugin({ // 定义环境变量
        'process.env': {
            ...env
        }
    })
]

  • 修改package.json
"scripts": {
"dev": "cross-env envMode=dev webpack serve --config ./build/webpack.dev.conf.js  --color",
"build": "cross-env envMode=prod webpack --config build/webpack.prod.conf.js  --color",
"build:test": "cross-env envMode=test webpack --config build/webpack.prod.conf.js  --color"
},
  • 配置变量文件
.env.dev
.env.test
.env.prod

配置完成后可以像VUE CLI3一样使用环境变量了点我点我

配置核心功能

将 ES6+ 转 ES5

由于有些浏览器无法解析 ES6+ 等高级语法,故需要将其转化为浏览器能够解析的低版本语法

yarn add @babel/core @babel/preset-env babel-loader -D
yarn add core-js -S

loader配置

// webpack.rules.conf.js
rules: [
    {
        test: /\.js$/,
        exclude: /node_modules/,
        use: {
            loader: 'babel-loader',
        }
    }, 
]

Babel 配置文件
Babel的配置文件是Babel执行时默认会在当前目录寻找的文件,主要有.babelrc,.babelrc.js,babel.config.js和package.json。它们的配置项都是相同,作用也是一样的,只需要选择其中一种。
推荐使用后缀名是js配置文件,因为可以使用js做一些逻辑处理,适用性更强。

// babel.config.js
const presets = [
    ["@babel/preset-env", {
        "useBuiltIns": 'usage', // 这里配置usage 会自动根据你使用的方法以及你配置的浏览器支持版本引入对于的方法。
        "corejs": "3.11.0" // 指定 corejs 版本 
    }]
]
const plugins = [
]
module.exports = {
    plugins,
    presets

}
产出HTML

安装 html-webpack-plugin 插件处理 index.html 文件,此插件的功能是根据提供的模板文件,自动生成正确的项目入口文件,并把 webpack 打包的 js 文件自动插入其中

yarn add html-webpack-plugin -D

plugins配置

webpack.base.conf.js
new HtmlWebpackPlugin({
    template: path.resolve(__dirname, '../public/index.html'),
    filename: 'index.html',
    title: 'webpack5+vue3',
    minify: {
        html5: true, // 根据HTML5规范解析输入
        collapseWhitespace: true, // 折叠空白区域
        preserveLineBreaks: false,
        minifyCSS: true, // 压缩文内css
        minifyJS: true, // 压缩文内js
        removeComments: false // 移除注释
    },
    files: prodMode ? cdn.prod : cdn.dev //CDN引入文件配置
}),

这里的index.html源文件放在../public/文件夹里。
注意: 配置动态网页标题时,需将模板中的 </code> 标签里的内容改成 <code><%= htmlWebpackPlugin.options.title %></code><br> <strong>CDN引入js</strong></p> <pre><code><% for (var i in htmlWebpackPlugin.options.files&&htmlWebpackPlugin.options.files.js) { %> <script src="<%= htmlWebpackPlugin.options.files.js[i] %>"></script> <% } %> </code></pre> <h5>添加 css 和 sass 支持</h5> <pre><code>yarn add style-loader css-loader -D yarn add node-sass sass-loader -D yarn add autoprefixer postcss-loader -D  </code></pre> <p><strong>loader配置</strong></p> <pre><code>//webpack.rules.conf.js {     test: /\.(css|scss|sass)$/,     use: [         'style-loader',         'css-loader',         'postcss-loader',         'sass-loader'     ] } </code></pre> <p>loader 从右到左(或从下到上)地取值(evaluate)/执行(execute)。在上面的示例中,从 sass-loader 开始执行,最后以 style-loader 为结束。</p> <h5>配置 alias 别名</h5> <p>创建 import 或 require 的别名,来确保模块引入变得更简单</p> <pre><code>// webpack.base.conf.js resolve: {     alias: {         "@": path.resolve(__dirname, "../src"),         assets: path.resolve(__dirname, '../src/assets/'),         img: path.resolve(__dirname, '../src/assets/img'),         utils: path.resolve(__dirname, '../src/utils'),         api: path.resolve(__dirname, '../src/api'),     }, }, </code></pre> <h5>处理图片等静态资源</h5> <p>Webpack5 之前我们处理静态资源比如PNG 图片、SVG 图标等等,需要用到url-loader,file-loader,raw-loader。Webpack5 提供了内置的静态资源构建能力,我们不需要安装额外的 loader,仅需要简单的配置就能实现静态资源的打包和分目录存放。这三个loader在github上也停止了更新。</p> <p>webpack5使用四种新增的资源模块(Asset Modules)替代了这些loader的功能。</p> <p>asset/resource 将资源分割为单独的文件,并导出url,就是之前的 file-loader的功能.<br> asset/inline 将资源导出为dataURL(url(data:))的形式,之前的 url-loader的功能.<br> asset/source 将资源导出为源码(source code). 之前的 raw-loader 功能.<br> asset 自动选择导出为单独文件或者 dataURL形式(默认为8KB). 之前有url-loader设置asset size limit 限制实现。</p> <pre><code>//webpack.rules.conf.js {     test: /\.(png|jpg|svg|gif)$/,     type: 'asset/resource',     generator: {         // [ext]前面自带"."         filename: 'assets/[hash:8].[name][ext]',     }, } </code></pre> <p><strong>更多配置点我点我</strong></p> <h5>打包时清除上次构建dist目录</h5> <p>webpack5.20以下版本清除dist文件内容一般使用插件 clean-webpack-plugin, 5.20版本以后output新增特性clean,用于清除dist文件</p> <pre><code>//webpack.prod.conf.js module.exports = {   //...   output: {     clean: true, // Clean the output directory before emit.   }, }; </code></pre> <p>更多配置点我点我</p> <h5>静态资源输出到根目录</h5> <pre><code>yarn add copy-webpack-plugin -D </code></pre> <p>当某些文件不需要经过webpack打包处理而直接使用,这里我们可以使用 <code>copy-webpack-plugin</code> 这个插件,在构建的时候,将 public/ 的静态资源直接复制到 dist根目录下</p> <pre><code>//webpack.prod.conf.js new copyWebpackPlugin({     patterns: [{         from: path.resolve(__dirname, "../public"),         to: './',         globOptions: {             dot: true,             gitignore: true,             ignore: ["**/index.html*"],         }     }] }), </code></pre> <h5>提取样式文件</h5> <p>本插件会将 CSS 提取到单独的文件中,为每个包含 CSS 的 JS 文件创建一个 CSS 文件,并且支持 CSS 和 SourceMaps 的按需加载。</p> <pre><code>yarn add mini-css-extract-plugin -D </code></pre> <pre><code>//webpack.prod.conf.js plugins: [ //...     new miniCssExtractPlugin({         filename: './css/[name].[contenthash].css',         chunkFilename: './css/[id].[contenthash].css',     }) ], </code></pre> <p>修改<code>webpack.rules.conf.js</code></p> <pre><code>{     test: /\.(css|scss|sass)$/,     use: [         !prodMode ? 'style-loader'             : {                 loader: MiniCssExtractPlugin.loader,                 options: {                     publicPath: '../',                 },             },         'css-loader',         'postcss-loader',         'sass-loader',     ], }, </code></pre> <h4>识别 .vue文件</h4> <pre><code>yarn add vue-loader@next @vue/compiler-sfc -D yarn add vue@next -S </code></pre> <p><strong>注意:</strong></p> <ul> <li>vue-loader:它是基于 webpack 的一个的 loader 插件,解析和转换 .vue  文件,提取出其中的逻辑代码 script、样式代码 style、以及 HTML 模版 template,vue 3.x需要安装vue-loader@next。</li> <li>@vue/compiler-sfc: Vue 2.x 时代,需要 vue-template-compiler 插件处理 .vue 内容为 ast , Vue 3.x 则变成 @vue/compiler-sfc 。<br>   <br> <strong>修改webpack配置</strong></li> </ul> <pre><code>// webpack.rules.conf.js rules: [     {         test: /\.vue$/,         use: [             'vue-loader'         ]     } ] //webpack.base.conf.js const { VueLoaderPlugin } = require('vue-loader/dist/index'); plugins: [     new VueLoaderPlugin() ] </code></pre> <p><strong>添加App.vue</strong></p> <pre><code><template>     <div>         <p class="title">{{title}}</p>     </div> </template> <script> import { defineComponent, ref } from 'vue'; export default defineComponent({     setup() {         const title = ref('渐进式JavaScript 框架');         return {             title         }     } }) </script> <style scoped> .title{     color: #000; } </style> </code></pre> <p><strong>修改main.js</strong></p> <pre><code class="prism language-js"><span class="token keyword">import</span> <span class="token punctuation">{</span> createApp <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'vue'</span> <span class="token comment">// Vue 3.x 引入 vue 的形式</span> <span class="token keyword">import</span> App <span class="token keyword">from</span> <span class="token string">'./App.vue'</span> <span class="token comment">// 引入 APP 页面组建</span> <span class="token keyword">const</span> app <span class="token operator">=</span> <span class="token function">createApp</span><span class="token punctuation">(</span>App<span class="token punctuation">)</span> <span class="token comment">// 通过 createApp 初始化 app</span> app<span class="token punctuation">.</span><span class="token function">mount</span><span class="token punctuation">(</span><span class="token string">'#root'</span><span class="token punctuation">)</span> <span class="token comment">// 将页面挂载到 root 节点</span> </code></pre> <p>跑一遍代码,运行成功。<br> ####安装Vue全家桶</p> <pre><code> yarn add vue-router@4 vuex@next axios -S </code></pre> <h4>vw适配</h4> <pre><code>yarn add postcss-loader postcss-px-to-viewport -D </code></pre> <p>新建postcss.config.js文件</p> <pre><code>'postcss-px-to-viewport': {     unitToConvert: 'px', // 需要转换的单位,默认为"px"     viewportWidth: 750, //  设计稿的视口宽度     unitPrecision: 5, // 单位转换后保留的精度     propList: ['*'], // 能转化为vw的属性列表     viewportUnit: 'vw', //  希望使用的视口单位     fontViewportUnit: 'vw', // 字体使用的视口单位     selectorBlackList: ['.ignore', '.hairlines', '.ig-'], // 需要忽略的CSS选择器     minPixelValue: 1, // 最小的转换数值,如果为1的话,只有大于1的值会被转换     mediaQuery: false, // 媒体查询里的单位是否需要转换单位     replace: true, // 是否直接更换属性值,而不添加备用属性     include: undefined, // 如果设置了include,那将只有匹配到的文件才会被转换,例如只转换 'src/mobile' 下的文件 (include: /\/src\/mobile\//)     landscape: false, // 是否添加根据 landscapeWidth 生成的媒体查询条件 @media (orientation: landscape)     landscapeUnit: 'vw', // 横屏时使用的单位     landscapeWidth: 568 // 横屏时使用的视口宽度 } </code></pre> <h4>去掉生产环境console.log</h4> <p>使用TerserWebpackPlugin来进行去除<code>console.log</code>,压缩JS,webpack5之后自带最新的<code>terser-webpack-plugin</code>,无需再重新安装原文点我点我</p> <pre><code>//webpack.prod.conf.js minimizer: [     new TerserPlugin({         // 多进程         parallel: true,         //删除注释         extractComments: false,         terserOptions: {             compress: { // 生产环境去除console                 drop_console: true,                 drop_debugger: true,             },         },     }) ], </code></pre> <h4>编译缓存</h4> <p>Webpack5 内置 <code>FileSystem Cache</code> 能力加速二次构建,可以通过以下配置来实现</p> <pre><code>cache: {     type: 'filesystem',     // 可选配置     buildDependencies: {         config: [__filename],  // 当构建依赖的config文件(通过 require 依赖)内容发生变化时,缓存失效     },     name: '',  // 配置以name为隔离,创建不同的缓存文件,如生成PC或mobile不同的配置缓存     ..., }, </code></pre> <p>配置好后第二次构建速度快的飞起。<br> 注意事项:</p> <ul> <li> <p>cache 的属性 type 会在开发模式下被默认设置成 <code>memory</code>,而且在生产模式中被禁用,所以如果想要在生产打包时使用缓存需要显式的设置。</p> </li> <li> <p>为了防止缓存过于固定,导致更改构建配置无感知,依然使用旧的缓存,默认情况下,每次修改构建配置文件都会导致重新开始缓存。当然也可以自己主动设置 <code>version</code> 来控制缓存的更新。</p> </li> </ul> <h4>集成 Vant</h4> <pre><code>yarn add vant@next -S </code></pre> <ul> <li>按需引入</li> </ul> <pre><code>yarn add babel-plugin-import -D </code></pre> <ul> <li>修改配置</li> </ul> <pre><code>// babel.config.js const plugins = [     ['import', {         libraryName: 'vant',         libraryDirectory: 'es',         style: true     }, 'vant'] ] </code></pre> <ul> <li>vant 适配vw</li> </ul> <p>修改postcss.config.js</p> <pre><code>const path = require('path'); module.exports = ({file}) => {     const designWidth = file.includes(path.join('node_modules', 'vant')) ? 375 : 750;     return {         plugins: {             'postcss-px-to-viewport': {                 unitToConvert: 'px', // 需要转换的单位,默认为"px"                 viewportWidth: designWidth, //  设计稿的视口宽度                 unitPrecision: 5, // 单位转换后保留的精度                 propList: ['*'], // 能转化为vw的属性列表                 viewportUnit: 'vw', //  希望使用的视口单位                 fontViewportUnit: 'vw', // 字体使用的视口单位                 selectorBlackList: ['.ignore', '.hairlines', '.ig-'], // 需要忽略的CSS选择器                 minPixelValue: 1, // 最小的转换数值,如果为1的话,只有大于1的值会被转换                 mediaQuery: false, // 媒体查询里的单位是否需要转换单位                 replace: true, // 是否直接更换属性值,而不添加备用属性                 include: undefined, // 如果设置了include,那将只有匹配到的文件才会被转换,例如只转换 'src/mobile' 下的文件 (include: /\/src\/mobile\//)                 landscape: false, // 是否添加根据 landscapeWidth 生成的媒体查询条件 @media (orientation: landscape)                 landscapeUnit: 'vw', // 横屏时使用的单位                 landscapeWidth: 568 // 横屏时使用的视口宽度             }         }     } } </code></pre> <h4>wepback的可视化资源分析插件</h4> <pre><code>yarn add webpack-bundle-analyzer -D </code></pre> <p>用来分析哪些模块引入了哪些代码,进行有目的性的优化代码<br> 在打包脚本后面加<code>--analyze</code> 如<code>yarn build --analyze</code>,无需另外配置。新版本webpack-cli已经支持了。原文</p> <p><a href="http://img.e-com-net.com/image/info8/f0e86f21416c4dae8907f811371e963e.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/f0e86f21416c4dae8907f811371e963e.jpg" alt="基于 vue3 + webpack 5 + sass+ vw 适配方案+axios 封装,从0构建手机端模板脚手架_第1张图片" width="650" height="314" style="border:1px solid black;"></a></p> <h4>最后</h4> <p>不知道大家看完这篇文章,学废了吗。文章中若是有错误或者不准确的地方,欢迎大家指出讨论。</p> <h4>欢迎关注</h4> <p>欢迎关注小程序“<code>进阶的大前端</code>”,800多道前端面试题在线查看<br> <a href="http://img.e-com-net.com/image/info8/ebcb5482db0d45e78ed8fe2eadc4dc5f.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/ebcb5482db0d45e78ed8fe2eadc4dc5f.jpg" alt="基于 vue3 + webpack 5 + sass+ vw 适配方案+axios 封装,从0构建手机端模板脚手架_第2张图片" width="430" height="430" style="border:1px solid black;"></a></p> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1527944584728965120"></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.js,vue,webpack)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1892468952072777728.htm" title="Vue.js 基础与实战指南:从入门到跑路" target="_blank">Vue.js 基础与实战指南:从入门到跑路</a> <span class="text-muted">王嘉俊705</span> <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/visual/1.htm">visual</a><a class="tag" taget="_blank" href="/search/studio/1.htm">studio</a><a class="tag" taget="_blank" href="/search/code/1.htm">code</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><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>一、Vue的两种使用方式扩展核心包开发直接通过引入Vue.js,适用于简单页面或局部功能增强。优点:轻量,无需构建工具。缺点:难以管理复杂项目,缺少工程化支持。工程化开发使用VueCLI、Vite等工具创建项目,结合Webpack/Vite构建。支持单文件组件(.vue文件),结构清晰(`,,)。插件生态丰富(如VueRouter、Vuex、Pinia)。二、Vue实例的深入理解核心配置项 new</div> </li> <li><a href="/article/1892453181489737728.htm" title="webpack性能优化策略" target="_blank">webpack性能优化策略</a> <span class="text-muted">雅望天堂i</span> <a class="tag" taget="_blank" href="/search/webpack/1.htm">webpack</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a> <div>1.代码分割(CodeSplitting)通过代码分割,可以将代码拆分成多个较小的文件,实现按需加载,减少首屏加载时间。使用SplitChunksPlugin将公共代码提取到单独的chunk中,避免重复打包。config.optimization.splitChunks({chunks:'all',cacheGroups:{//第三方组件libs:{name:'chunk-libs',test:/</div> </li> <li><a href="/article/1892440717855354880.htm" title="vue3计算属性computed" target="_blank">vue3计算属性computed</a> <span class="text-muted"></span> <div>计算属性computedimport{computed}from"vue"//方式一//constcollapse=computed(()=>{//console.log('计算属性变化');//returnisCollapse//})//方式二constcollapse=computed({get:()=>{//返回订阅值returnisCollapse},set:(val)=>{//这里可以对</div> </li> <li><a href="/article/1892436041772625920.htm" title="solidjs中实现vue中的keep-alive功能的总结" target="_blank">solidjs中实现vue中的keep-alive功能的总结</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/chrome-devtools/1.htm">chrome-devtools</a> <div>在Solid.js中,虽然没有像Vue中keep-alive这样的直接API,但你可以使用类似的方式来保持组件的状态或避免组件的重复挂载。Solid.js中的组件本质上是基于反应式系统的,每个组件都在被销毁时自动清除其反应式状态。所以,如果你想模拟keep-alive的效果,可以使用以下几种方式:1.使用createEffect或createMemo保存状态你可以通过使用createEffect或</div> </li> <li><a href="/article/1892436040443031552.htm" title="solidjs中实现vue中的keep-alive功能的方法" target="_blank">solidjs中实现vue中的keep-alive功能的方法</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/angular/1.htm">angular</a> <div>在Solid.js中,虽然没有像Vue中keep-alive这样的直接API,但你可以使用类似的方式来保持组件的状态或避免组件的重复挂载。Solid.js中的组件本质上是基于反应式系统的,每个组件都在被销毁时自动清除其反应式状态。所以,如果你想模拟keep-alive的效果,可以使用以下几种方式:1.使用createEffect或createMemo保存状态你可以通过使用createEffect或</div> </li> <li><a href="/article/1892426922990825472.htm" title="[附源码]计算机毕业设计基于SpringBoot的小说阅读系统" target="_blank">[附源码]计算机毕业设计基于SpringBoot的小说阅读系统</a> <span class="text-muted">计算机毕设程序设计</span> <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/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>项目运行环境配置:Jdk1.8+Tomcat7.0+Mysql+HBuilderX(Webstorm也行)+Eclispe(IntelliJIDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:SSM+mybatis+Maven+Vue等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.ID</div> </li> <li><a href="/article/1892426166254497792.htm" title="基于 Spring Boot 的社区居民健康管理系统部署说明书" target="_blank">基于 Spring Boot 的社区居民健康管理系统部署说明书</a> <span class="text-muted">小星袁</span> <a class="tag" taget="_blank" href="/search/%E6%AF%95%E4%B8%9A%E8%AE%BE%E8%AE%A1%E5%8E%9F%E6%96%87/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/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>目录1系统概述2准备资料3系统安装与部署3.1数据库部署3.1.1MySQL的部署3.1.2Navicat的部署3.2服务器部署3.3客户端部署4系统配置与优化5其他基于SpringBoot的社区居民健康管理系统部署说明书1系统概述本系统主要运用了SpringBoot框架,前端页面的设计主要依托Vue框架来构建,实现丰富且交互性强的用户界面,后台管理功能则采用SpringBoot框架与MySQL数</div> </li> <li><a href="/article/1892404982125228032.htm" title="小程序类毕业设计选题题目推荐 (29)" target="_blank">小程序类毕业设计选题题目推荐 (29)</a> <span class="text-muted">初尘屿风</span> <a class="tag" taget="_blank" href="/search/%E6%AF%95%E4%B8%9A%E8%AE%BE%E8%AE%A1/1.htm">毕业设计</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/%E5%B0%8F%E7%A8%8B%E5%BA%8F/1.htm">小程序</a><a class="tag" taget="_blank" href="/search/%E8%AF%BE%E7%A8%8B%E8%AE%BE%E8%AE%A1/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/%E5%BE%AE%E4%BF%A1/1.htm">微信</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a> <div>基于微信小程序的设备故障报修管理系统设计与实现,SpringBoot+Vue+毕业论文基于微信小程序的设备故障报修管理系统设计与实现,SSM+Vue+毕业论文基于微信小程序的电影院购票小程序系统,SpringBoot+Vue+毕业论文+指导搭建视频基于微信小程序的宿舍报修管理系统设计与实现,SpringBoot(15500字)+Vue+毕业论文+指导搭建视频基于微信小程序的电影院订票选座系统的设计</div> </li> <li><a href="/article/1892400063376846848.htm" title="scoped作用原理及样式穿透的应用" target="_blank">scoped作用原理及样式穿透的应用</a> <span class="text-muted">太阳与星辰</span> <a class="tag" taget="_blank" href="/search/Vue2/1.htm">Vue2</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/vue/1.htm">vue</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a> <div>scoped作用原理及样式穿透的应用(1)scoped作用原理(2)对第三条的详细解释(3)场景----微调第三方库样式(4)样式穿透(5)补充(1)scoped作用原理scoped是Vue样式作用域的一个特性,相信很多人经常在项目中用它来避免样式污染(即样式隔离)。当我们在一个组件中给style标签加上scoped时候,它会遵循以下三个规则,如下为组件实例生成一个唯一标识(可以称为文件指纹),给</div> </li> <li><a href="/article/1892360210878623744.htm" title="vue3+vite 自动引入export default的包" target="_blank">vue3+vite 自动引入export default的包</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> <div>importautoImportfrom'unplugin-auto-import/vite';exportdefaultdefineConfig({plugins:[vue(),vueJsx(),autoImport({imports:['vue','vue-router','pinia',{//相当于importuseRouterStackStorefrom'@/store/modules/r</div> </li> <li><a href="/article/1892358824027811840.htm" title="vue制作导航栏html,Vue实现导航栏菜单" target="_blank">vue制作导航栏html,Vue实现导航栏菜单</a> <span class="text-muted">DataQueen</span> <a class="tag" taget="_blank" href="/search/vue%E5%88%B6%E4%BD%9C%E5%AF%BC%E8%88%AA%E6%A0%8Fhtml/1.htm">vue制作导航栏html</a> <div>本文实例为大家分享了Vue实现导航栏菜单的具体代码,供大家参考,具体内容如下这里是刚学习vue的时候,没有用vue的任何UI组件库写的导航栏菜单。menu.html导航栏左项目名称您好,用户!v-bind:class="{checked:index==nowIndex}"v-on:click="setTab('menu',index,menus)">{{menu.text}}菜单一的内容菜单二的内</div> </li> <li><a href="/article/1892357435725770752.htm" title="vue3 项目如何接入 AI 大模型" target="_blank">vue3 项目如何接入 AI 大模型</a> <span class="text-muted">代码搬运媛</span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a> <div>以下是在Vue3项目中接入AI大模型的一般步骤:准备工作确定要接入的AI模型,如OpenAI的gpt-3.5-turbo、科大讯飞的星火大模型等。选择AI模型及获取API密钥:注册对应AI平台的账号,进入账户设置页面找到“ViewAPIKeys”或类似选项,创建属于自己的API密钥,并妥善保存。创建Vue项目并安装依赖打开命令行,使用vuecreate项目名命令创建一个新的Vue项目,按照提示完成</div> </li> <li><a href="/article/1892357436141006848.htm" title="vue-router 中滚动行为设置的妙用" target="_blank">vue-router 中滚动行为设置的妙用</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/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>在vue-router里,滚动行为设置能够对路由切换时的页面滚动位置进行控制,这在单页面应用(SPA)里十分有用,能够为用户带来更流畅、更符合预期的浏览体验。下面为你详细介绍滚动行为设置的作用和使用方法。作用恢复滚动位置当用户在某个页面滚动到特定位置后,再导航到其他页面,之后又返回到该页面时,滚动行为设置可以让页面恢复到之前的滚动位置。这在浏览长页面或者列表页时非常实用,用户无需重新滚动到之前查看</div> </li> <li><a href="/article/1892346219720667136.htm" title="DeepSeek 助力 Vue 开发:打造丝滑的导航栏(Navbar)" target="_blank">DeepSeek 助力 Vue 开发:打造丝滑的导航栏(Navbar)</a> <span class="text-muted">宝码香车</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/DeepSeek/1.htm">DeepSeek</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/ecmascript/1.htm">ecmascript</a><a class="tag" taget="_blank" href="/search/DeepSeek/1.htm">DeepSeek</a> <div>前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦目录DeepSeek助力Vue开发:打造丝滑的导航栏(Navbar)前言页面效果指令输入属性定义1.导航栏样式相关2.导航项相关3.响应式相关4.对齐方式相关事件定义1.导航项点击事件2.菜单折叠切换事件其他建议1.可访问性2.动画效果3.图标支</div> </li> <li><a href="/article/1892314959451320320.htm" title="vue3 + vite引入地址路径报错,以及无法点击跳转相应的文件" target="_blank">vue3 + vite引入地址路径报错,以及无法点击跳转相应的文件</a> <span class="text-muted">zmyalh</span> <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/vue.js/1.htm">vue.js</a> <div>vue3+vite引入地址路径报错,以及无法点击跳转相应的文件在项目中找到tsconfig.json,或者jsconfig.json文件,使用一下代码替换即可。如果两个文件都不存在,如果项目使用了ts,就创建tsconfig.json文件,复制下方代码。如果不是使用的ts,就创建jsconfig.json文件,复制下方代码。配置完成后关掉软件重启!!!{"compilerOptions":{"ba</div> </li> <li><a href="/article/1892314959031889920.htm" title="vue播放m3u8视频" target="_blank">vue播放m3u8视频</a> <span class="text-muted">zmyalh</span> <a class="tag" taget="_blank" href="/search/html%E8%A7%86%E9%A2%91video/1.htm">html视频video</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>这里封装成组件先安装插件npmivue-video-player-S//版本"^5.0.2"npmivideojs-flash-S//播放rtmpnpmivideojs-contrib-hls-S//播放m3u8父页面://传入视频地址videoUrl页面引入importvideosfrom"../../../components/videos/videos.vue";components:{vi</div> </li> <li><a href="/article/1892306631119663104.htm" title="vue中nextTick函数和react类似实现" target="_blank">vue中nextTick函数和react类似实现</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/react.js/1.htm">react.js</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>Vue3基本用法:import{nextTick}from'vue';//全局调用nextTick(()=>{//在下一个DOM更新循环后执行的代码});//在组件内部调用setup(){asyncfunctionhandleUpdate(){//修改数据...awaitnextTick();//在数据引发的DOM更新完成后执行的代码}}nextTick函数现在作为vue包的一个导出成员,需要显式</div> </li> <li><a href="/article/1892292232627679232.htm" title="vue面试题|[2025-1-10]" target="_blank">vue面试题|[2025-1-10]</a> <span class="text-muted">○陈</span> <a class="tag" taget="_blank" href="/search/vue%E9%9D%A2%E8%AF%95%E9%A2%98/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>1.vue和jquery的区别是什么?1.原理不同vue就是数据绑定;jq是先获取dom再处理2.着重点不同vue是数据驱动,jq是着重于页面3.操作不同4.未来发展不同2.vuex的响应式处理vuex是vue的状态管理工具vue中可以直接触发methods中的方法,vuex是不可以的。处理异步,当触发事件的时候,会通过dispatch来访问actions中的方法,actions中的commit会</div> </li> <li><a href="/article/1892267275638075392.htm" title="electron学习笔记" target="_blank">electron学习笔记</a> <span class="text-muted">weixin_46452138</span> <a class="tag" taget="_blank" href="/search/electron/1.htm">electron</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>electron个人学习笔记一、electron简单了解Electron是一个跨平台的、基于Web前端技术的桌面GUI应用程序开发框架。可以使用HTML、CSS来绘制界面和控制布局,使用JavaScript来控制用户行为和业务逻辑,使用Node.js来通信、处理音频视频等,几乎所有的Web前端技术和框架(jQuery、Vue、React、Angular等)都可以应用到桌面GUI开发中。二、开发前基</div> </li> <li><a href="/article/1892257438686572544.htm" title="【开源免费】基于Vue和SpringBoot的医院后台管理系统(附论文)" target="_blank">【开源免费】基于Vue和SpringBoot的医院后台管理系统(附论文)</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/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E6%BA%90/1.htm">开源</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/javascript/1.htm">javascript</a> <div>本文项目编号T170,文末自助获取源码\color{red}{T170,文末自助获取源码}T170,文末自助获取源码目录一、系统介绍二、数据库设计三、配套教程3.1启动教程3.2讲解视频3.3二次开发教程四、功能截图五、文案资料5.1选题背景5.2国内外研究现状六、核心代码6.1查询数据6.2新增数据6.3删除数据一、系统介绍在管理员功能模块确定下来的基础上,对管理员各个功能进行设计,确定管理员功</div> </li> <li><a href="/article/1892253777512165376.htm" title="vue 的axios请求数据2种方式 很重要" target="_blank">vue 的axios请求数据2种方式 很重要</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%8A%80%E6%9C%AF/1.htm">前端技术</a><a class="tag" taget="_blank" href="/search/vue/1.htm">vue</a><a class="tag" taget="_blank" href="/search/axios%E8%AF%B7%E6%B1%82%E6%95%B0%E6%8D%AE%E7%9A%84%E6%96%B9%E6%B3%95/1.htm">axios请求数据的方法</a> <div>show:function(){//post方式//赋值给变量self//使用axios请求后台的数据get和post的两种方式varself=this;varurl='xxxx.json';axios.post(url,{params:{username:"yyyyy",password:'18888'}}).then(function(response){console.log(respons</div> </li> <li><a href="/article/1892243459931172864.htm" title="本地运行 DeepSeek-R1 的成本究竟多高?" target="_blank">本地运行 DeepSeek-R1 的成本究竟多高?</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AFjavascript/1.htm">前端javascript</a> <div>ReactHook深入浅出CSS技巧与案例详解vue2与vue3技巧合集VueUse源码解读本地运行DeepSeek-R1的成本究竟多高?DeepSeek让人们对大规模生成式模型的追求更进一步,甚至有人想在本地跑下规模高达671B参数的版本。但要在家里开这种“巨无霸”,可不是闹着玩的:光是推理就对硬件提出了非常高的要求。这篇文章将大致拆解一下,如果真想在个人电脑上运行DeepSeek-R1,可能需</div> </li> <li><a href="/article/1892243458681270272.htm" title="构建 Next.js 应用时的安全保障与风险防范措施" target="_blank">构建 Next.js 应用时的安全保障与风险防范措施</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AFjavascript/1.htm">前端javascript</a> <div>ReactHook深入浅出CSS技巧与案例详解vue2与vue3技巧合集VueUse源码解读在Web应用开发过程中,确保应用的安全性至关重要,这不仅能保护用户数据,还能防止应用本身遭受各种安全攻击。Next.js作为一款备受欢迎的React框架,内置了许多安全功能和推荐做法,但开发者仍需清楚地了解潜在的安全隐患,并采取合适的防范策略。一、Next.js安全问题概述尽管Next.js为构建安全应用提</div> </li> <li><a href="/article/1892234841940881408.htm" title="Vue中事件名的命名规范" target="_blank">Vue中事件名的命名规范</a> <span class="text-muted">sakuraxiaoyu</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的项目,最近接触了vue的代码,在学习的过程中同时也会伴随着一点疑惑。比如一以下面的父子组件的事件传递为例:父组件:显然,父组件有个自定义事件refresh-list需要子组件进行接收。子组件:...constemit=defineEmits(["refreshList"]);...//触发事件emit("refreshList");我疑惑的点在于</div> </li> <li><a href="/article/1892234839336218624.htm" title="DeepSeek 助力 Vue 开发:打造丝滑的表单验证(Form Validation)" target="_blank">DeepSeek 助力 Vue 开发:打造丝滑的表单验证(Form Validation)</a> <span class="text-muted">宝码香车</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/DeepSeek/1.htm">DeepSeek</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/ecmascript/1.htm">ecmascript</a><a class="tag" taget="_blank" href="/search/DeepSeek/1.htm">DeepSeek</a> <div>前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦目录DeepSeek助力Vue开发:打造丝滑的表单验证(FormValidation)前言页面效果指令输入组件属性定义1.表单数据绑定相关2.验证规则相关3.样式和布局相关4.其他组件事件定义1.验证相关2.表单提交相关3.字段值变化相关其他可能</div> </li> <li><a href="/article/1892213529885339648.htm" title="[从零开始的 Vue3 系列]:第四章——Vue3 中常用组件通信全解析" target="_blank">[从零开始的 Vue3 系列]:第四章——Vue3 中常用组件通信全解析</a> <span class="text-muted">花信少年plus</span> <a class="tag" taget="_blank" href="/search/%E4%BB%8E%E9%9B%B6%E5%BC%80%E5%A7%8B%E7%9A%84vue3/1.htm">从零开始的vue3</a><a class="tag" taget="_blank" href="/search/%E7%B3%BB%E5%88%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/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>前言本系列将从零开始,系统性地介绍Vue3的常用API,逐步深入每个核心概念与功能模块。通过详尽的讲解与实战演示,帮助大家掌握Vue3的基础与进阶知识,最终具备独立搭建完整Vue3项目的能力。vue3中的组件通信Vue3提供了多种方式来进行组件之间的通信。根据场景的不同,开发者可以选择最合适的方式进行数据的传递与事件的处理。1.通过Props传递数据(父->子)父组件:importChildCom</div> </li> <li><a href="/article/1892203451027353600.htm" title="vue3中<el-table-column>状态的显示" target="_blank">vue3中<el-table-column>状态的显示</a> <span class="text-muted">BillKu</span> <a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/elementui/1.htm">elementui</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>方法1:使用作用域插槽+标签{{row.status===1?'启用':'禁用'}}consttableData=[{id:1,name:'数据1',status:1},{id:2,name:'数据2',status:0},//...]方法2:使用formatter格式化显示conststatusFormatter=(row)=>{returnrow.status===1?'启用':'禁用'}自定</div> </li> <li><a href="/article/1892201180927422464.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><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>什么是VUE框架?Vue是一款用于构建用户界面的JavaScript框架。它基于标准HTML、CSS和JavaScript构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。Vue的核心是一个响应的数据绑定系统,它让数据与DOM保持同步非常简单。Vue的目标是通过尽可能简单的API实现响应的数据绑定和组合的视图组件。它不仅易于上手,还便于与第三方库或既有项目整合。Vue也被称为</div> </li> <li><a href="/article/1892194371290329088.htm" title="Vue学习教程-11数组变化监测" target="_blank">Vue学习教程-11数组变化监测</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%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>文章目录前言一、vue侦听响应数组变更方法二、使用Vue.set或者this.$set三、替换数组总结前言在Vue中,数组变化监测是其响应式系统的一个重要特性。Vue2.x版本中,当使用Vue.set或者this.$set,或者在初始化时就声明好数组的每个元素或者调用数组方法,可以确保数组的变更能够被Vue检测到并触发视图的更新。然而,在某些情况下,直接通过索引修改数组元素,例如array[ind</div> </li> <li><a href="/article/1892181126793981952.htm" title="React学习笔记04" target="_blank">React学习笔记04</a> <span class="text-muted">充气大锤</span> <a class="tag" taget="_blank" href="/search/React%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/1.htm">React学习笔记</a><a class="tag" taget="_blank" href="/search/react.js/1.htm">react.js</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/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> <div>一、理解组件通信组件通信就是组件间的数据传递,根据组件嵌套关系的不同,有不同的通信方法。在Vue中组件通信是我们组件间传递数据的一种最常用的方法,我们在Vue中使用props来实现父传子,用$emit实现子传父,在React中如何实现呢?1.1、父传子:1、父组件传递数据:在子组件标签身上绑定属性2、子组件接收数据:props的参数functionSon(props){return{props.n</div> </li> <li><a href="/article/115.htm" title="C/C++Win32编程基础详解视频下载" target="_blank">C/C++Win32编程基础详解视频下载</a> <span class="text-muted">择善Zach</span> <a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/Win32/1.htm">Win32</a> <div>课题视频:C/C++Win32编程基础详解 视频知识:win32窗口的创建                   windows事件机制 主讲:择善Uncle老师 学习交流群:386620625 验证码:625 --</div> </li> <li><a href="/article/242.htm" title="Guava Cache使用笔记" target="_blank">Guava Cache使用笔记</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/guava/1.htm">guava</a><a class="tag" taget="_blank" href="/search/cache/1.htm">cache</a> <div>1.Guava Cache的get/getIfPresent方法当参数为null时会抛空指针异常 我刚开始使用时还以为Guava Cache跟HashMap一样,get(null)返回null。 实际上Guava整体设计思想就是拒绝null的,很多地方都会执行com.google.common.base.Preconditions.checkNotNull的检查。 2.Guava</div> </li> <li><a href="/article/369.htm" title="解决ora-01652无法通过128(在temp表空间中)" target="_blank">解决ora-01652无法通过128(在temp表空间中)</a> <span class="text-muted">0624chenhong</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a> <div>解决ora-01652无法通过128(在temp表空间中)扩展temp段的过程 一个sql语句后,大约花了10分钟,好不容易有一个结果,但是报了一个ora-01652错误,查阅了oracle的错误代码说明:意思是指temp表空间无法自动扩展temp段。这种问题一般有两种原因:一是临时表空间空间太小,二是不能自动扩展。 分析过程:    既然是temp表空间有问题,那当</div> </li> <li><a href="/article/496.htm" title="Struct在jsp标签" target="_blank">Struct在jsp标签</a> <span class="text-muted">不懂事的小屁孩</span> <a class="tag" taget="_blank" href="/search/struct/1.htm">struct</a> <div>非UI标签介绍: 控制类标签: 1:程序流程控制标签   if   elseif    else <s:if test="isUsed"> <span class="label label-success">True</span> </</div> </li> <li><a href="/article/623.htm" title="按对象属性排序" target="_blank">按对象属性排序</a> <span class="text-muted">换个号韩国红果果</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/%E5%AF%B9%E8%B1%A1%E6%8E%92%E5%BA%8F/1.htm">对象排序</a> <div>利用JavaScript进行对象排序,根据用户的年龄排序展示 <script> var bob={ name;bob, age:30 } var peter={ name;peter, age:30 } var amy={ name;amy, age:24 } var mike={ name;mike, age:29 } var john={ </div> </li> <li><a href="/article/750.htm" title="大数据分析让个性化的客户体验不再遥远" target="_blank">大数据分析让个性化的客户体验不再遥远</a> <span class="text-muted">蓝儿唯美</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a> <div>顾客通过多种渠道制造大量数据,企业则热衷于利用这些信息来实现更为个性化的体验。 分析公司Gartner表示,高级分析会成为客户服务的关键,但是大数据分析的采用目前仅局限于不到一成的企业。 挑战在于企业还在努力适应结构化数据,疲于根据自身的客户关系管理(CRM)系统部署有效的分析框架,以及集成不同的内外部信息源。 然而,面对顾客通过数字技术参与而产生的快速变化的信息,企业需要及时作出反应。要想实</div> </li> <li><a href="/article/877.htm" title="java笔记4" target="_blank">java笔记4</a> <span class="text-muted">a-john</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>操作符 1,使用java操作符       操作符接受一个或多个参数,并生成一个新值。参数的形式与普通的方法调用不用,但是效果是相同的。加号和一元的正号(+)、减号和一元的负号(-)、乘号(*)、除号(/)以及赋值号(=)的用法与其他编程语言类似。       操作符作用于操作数,生成一个新值。另外,有些操作符可能会改变操作数自身的</div> </li> <li><a href="/article/1004.htm" title="从裸机编程到嵌入式Linux编程思想的转变------分而治之:驱动和应用程序" target="_blank">从裸机编程到嵌入式Linux编程思想的转变------分而治之:驱动和应用程序</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%AD%A6%E4%B9%A0/1.htm">嵌入式学习</a> <div>    笔者学习嵌入式Linux也有一段时间了,很奇怪的是很多书讲驱动编程方面的知识,也有很多书将ARM9方面的知识,但是从以前51形式的(对寄存器直接操作,初始化芯片的功能模块)编程方法,和思维模式,变换为基于Linux操作系统编程,讲这个思想转变的书几乎没有,让初学者走了很多弯路,撞了很多难墙。     笔者因此写上自己的学习心得,希望能给和我一样转变</div> </li> <li><a href="/article/1131.htm" title="在springmvc中解决FastJson循环引用的问题" target="_blank">在springmvc中解决FastJson循环引用的问题</a> <span class="text-muted">asialee</span> <a class="tag" taget="_blank" href="/search/%E5%BE%AA%E7%8E%AF%E5%BC%95%E7%94%A8/1.htm">循环引用</a><a class="tag" taget="_blank" href="/search/fastjson/1.htm">fastjson</a> <div>          我们先来看一个例子:           package com.elong.bms; import java.io.OutputStream; import java.util.HashMap; import java.util.Map; import co</div> </li> <li><a href="/article/1258.htm" title="ArrayAdapter和SimpleAdapter技术总结" target="_blank">ArrayAdapter和SimpleAdapter技术总结</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/SimpleAdapter/1.htm">SimpleAdapter</a><a class="tag" taget="_blank" href="/search/ArrayAdapter/1.htm">ArrayAdapter</a><a class="tag" taget="_blank" href="/search/%E9%AB%98%E7%BA%A7%E7%BB%84%E4%BB%B6%E5%9F%BA%E7%A1%80/1.htm">高级组件基础</a> <div>ArrayAdapter比较简单,但它只能用于显示文字。而SimpleAdapter则有很强的扩展性,可以自定义出各种效果   ArrayAdapter;的数据可以是数组或者是队列        // 获得下拉框对象 AutoCompleteTextView textview = (AutoCompleteTextView) this </div> </li> <li><a href="/article/1385.htm" title="九封信" target="_blank">九封信</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E7%94%9F/1.htm">人生</a><a class="tag" taget="_blank" href="/search/%E5%8A%B1%E5%BF%97/1.htm">励志</a> <div>        有时候,莫名的心情不好,不想和任何人说话,只想一个人静静的发呆。有时候,想一个人躲起来脆弱,不愿别人看到自己的伤口。有时候,走过熟悉的街角,看到熟悉的背影,突然想起一个人的脸。有时候,发现自己一夜之间就长大了。         2014,写给人</div> </li> <li><a href="/article/1512.htm" title="Linux下安装MySQL Web 管理工具phpMyAdmin" target="_blank">Linux下安装MySQL Web 管理工具phpMyAdmin</a> <span class="text-muted">sunjing</span> <a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/Install/1.htm">Install</a><a class="tag" taget="_blank" href="/search/phpMyAdmin/1.htm">phpMyAdmin</a> <div>PHP http://php.net/ phpMyAdmin http://www.phpmyadmin.net Error compiling PHP on CentOS x64   一、安装Apache 请参阅http://billben.iteye.com/admin/blogs/1985244   二、安装依赖包 sudo yum install gd </div> </li> <li><a href="/article/1639.htm" title="分布式系统理论" target="_blank">分布式系统理论</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a> <div>FLP One famous theory in distributed computing, known as FLP after the authors Fischer, Lynch, and Patterson, proved that in a distributed system with asynchronous communication and process crashes, </div> </li> <li><a href="/article/1766.htm" title="ssh2整合(spring+struts2+hibernate)-附源码" target="_blank">ssh2整合(spring+struts2+hibernate)-附源码</a> <span class="text-muted">白糖_</span> <a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/1.htm">项目管理</a> <div>最近抽空又整理了一套ssh2框架,主要使用的技术如下: spring做容器,管理了三层(dao,service,actioin)的对象 struts2实现与页面交互(MVC),自己做了一个异常拦截器,能拦截Action层抛出的异常 hibernate与数据库交互 BoneCp数据库连接池,据说比其它数据库连接池快20倍,仅仅是据说 MySql数据库   项目用eclipse</div> </li> <li><a href="/article/1893.htm" title="treetable bug记录" target="_blank">treetable bug记录</a> <span class="text-muted">braveCS</span> <a class="tag" taget="_blank" href="/search/table/1.htm">table</a> <div>// 插入子节点删除再插入时不能正常显示。修改: //不知改后有没有错,先做个备忘 Tree.prototype.removeNode = function(node) { // Recursively remove all descendants of +node+ this.unloadBranch(node); // Remove</div> </li> <li><a href="/article/2020.htm" title="编程之美-电话号码对应英语单词" target="_blank">编程之美-电话号码对应英语单词</a> <span class="text-muted">bylijinnan</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/%E7%BC%96%E7%A8%8B%E4%B9%8B%E7%BE%8E/1.htm">编程之美</a> <div> import java.util.Arrays; public class NumberToWord { /** * 编程之美 电话号码对应英语单词 * 题目: * 手机上的拨号盘,每个数字都对应一些字母,比如2对应ABC,3对应DEF.........,8对应TUV,9对应WXYZ, * 要求对一段数字,输出其代表的所有可能的字母组合</div> </li> <li><a href="/article/2147.htm" title="jquery ajax读书笔记" target="_blank">jquery ajax读书笔记</a> <span class="text-muted">chengxuyuancsdn</span> <a class="tag" taget="_blank" href="/search/jQuery+ajax/1.htm">jQuery ajax</a> <div>1、jsp页面 <%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <% String path = request.getContextPath(); String basePath = request.getScheme()</div> </li> <li><a href="/article/2274.htm" title="JWFD工作流拓扑结构解析伪码描述算法" target="_blank">JWFD工作流拓扑结构解析伪码描述算法</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/%E6%B4%BB%E5%8A%A8/1.htm">活动</a><a class="tag" taget="_blank" href="/search/J%23/1.htm">J#</a> <div>  对工作流拓扑结构解析感兴趣的朋友可以下载附件,或者下载JWFD的全部代码进行分析   /*  流程图拓扑结构解析伪码描述算法         public java.util.ArrayList DFS(String graphid, String stepid, int j) </div> </li> <li><a href="/article/2401.htm" title="oracle I/O 从属进程" target="_blank">oracle I/O 从属进程</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a> <div>I/O 从属进程   I/O从属进程用于为不支持异步I/O的系统或设备模拟异步I/O.例如,磁带设备(相当慢)就不支持异步I/O.通过使用I/O 从属进程,可以让磁带机模仿通常只为磁盘驱动器提供的功能。就好像支持真正的异步I/O 一样,写设备的进程(调用者)会收集大量数据,并交由写入器写出。数据成功地写出时,写入器(此时写入器是I/O 从属进程,而不是操作系统)会通知原来的调用者,调用者则会</div> </li> <li><a href="/article/2528.htm" title="高级排序:希尔排序" target="_blank">高级排序:希尔排序</a> <span class="text-muted">dieslrae</span> <a class="tag" taget="_blank" href="/search/%E5%B8%8C%E5%B0%94%E6%8E%92%E5%BA%8F/1.htm">希尔排序</a> <div> public void shellSort(int[] array){ int limit = 1; int temp; int index; while(limit <= array.length/3){ limit = limit * 3 + 1; </div> </li> <li><a href="/article/2655.htm" title="初二下学期难记忆单词" target="_blank">初二下学期难记忆单词</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/english/1.htm">english</a><a class="tag" taget="_blank" href="/search/word/1.htm">word</a> <div>kitchen 厨房 cupboard 厨柜 salt 盐 sugar 糖 oil 油 fork 叉;餐叉 spoon 匙;调羹 chopsticks 筷子 cabbage 卷心菜;洋白菜 soup 汤 Italian 意大利的   Indian 印度的 workplace  工作场所 even 甚至;更 Italy 意大利 laugh 笑 m</div> </li> <li><a href="/article/2782.htm" title="Go语言使用MySQL数据库进行增删改查" target="_blank">Go语言使用MySQL数据库进行增删改查</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a> <div>目前Internet上流行的网站构架方式是LAMP,其中的M即MySQL, 作为数据库,MySQL以免费、开源、使用方便为优势成为了很多Web开发的后端数据库存储引擎。MySQL驱动Go中支持MySQL的驱动目前比较多,有如下几种,有些是支持database/sql标准,而有些是采用了自己的实现接口,常用的有如下几种: http://code.google.c...o-mysql-dri</div> </li> <li><a href="/article/2909.htm" title="git命令" target="_blank">git命令</a> <span class="text-muted">shuizhaosi888</span> <a class="tag" taget="_blank" href="/search/git/1.htm">git</a> <div>---------------设置全局用户名: git config --global user.name "HanShuliang" //设置用户名 git config --global user.email "13241153187@163.com" //设置邮箱 ---------------查看环境配置 git config --li</div> </li> <li><a href="/article/3036.htm" title="qemu-kvm 网络 nat模式 (四)" target="_blank">qemu-kvm 网络 nat模式 (四)</a> <span class="text-muted">haoningabc</span> <a class="tag" taget="_blank" href="/search/kvm/1.htm">kvm</a><a class="tag" taget="_blank" href="/search/qemu/1.htm">qemu</a> <div>qemu-ifup-NAT #!/bin/bash BRIDGE=virbr0 NETWORK=192.168.122.0 GATEWAY=192.168.122.1 NETMASK=255.255.255.0 DHCPRANGE=192.168.122.2,192.168.122.254 TFTPROOT= BOOTP= function check_bridge() </div> </li> <li><a href="/article/3163.htm" title="不要让未来的你,讨厌现在的自己" target="_blank">不要让未来的你,讨厌现在的自己</a> <span class="text-muted">jingjing0907</span> <a class="tag" taget="_blank" href="/search/%E7%94%9F%E6%B4%BB+%E5%A5%8B%E6%96%97+%E5%B7%A5%E4%BD%9C+%E6%A2%A6%E6%83%B3/1.htm">生活 奋斗 工作 梦想</a> <div> 故事one  23岁,他大学毕业,放弃了父母安排的稳定工作,独闯京城,在家小公司混个小职位,工作还算顺手,月薪三千,混了混,混走了一年的光阴。    24岁,有了女朋友,从二环12人的集体宿舍搬到香山民居,一间平房,二人世界,爱爱爱。偶然约三朋四友,打扑克搓麻将,日子快乐似神仙;    25岁,出了几次差,调了两次岗,薪水涨了不过百,生猛狂飙的物价让现实血淋淋,无力为心爱银儿购件大牌</div> </li> <li><a href="/article/3290.htm" title="枚举类型详解" target="_blank">枚举类型详解</a> <span class="text-muted">一路欢笑一路走</span> <a class="tag" taget="_blank" href="/search/enum/1.htm">enum</a><a class="tag" taget="_blank" href="/search/%E6%9E%9A%E4%B8%BE%E8%AF%A6%E8%A7%A3/1.htm">枚举详解</a><a class="tag" taget="_blank" href="/search/enumset/1.htm">enumset</a><a class="tag" taget="_blank" href="/search/enumMap/1.htm">enumMap</a> <div>枚举类型详解 一.Enum详解      1.1枚举类型的介绍   JDK1.5加入了一个全新的类型的”类”—枚举类型,为此JDK1.5引入了一个新的关键字enum,我们可以这样定义一个枚举类型。      Demo:一个最简单的枚举类   public enum ColorType { RED</div> </li> <li><a href="/article/3417.htm" title="第11章 动画效果(上)" target="_blank">第11章 动画效果(上)</a> <span class="text-muted">onestopweb</span> <a class="tag" taget="_blank" href="/search/%E5%8A%A8%E7%94%BB/1.htm">动画</a> <div>index.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/</div> </li> <li><a href="/article/3544.htm" title="Eclipse中jsp、js文件编辑时,卡死现象解决汇总" target="_blank">Eclipse中jsp、js文件编辑时,卡死现象解决汇总</a> <span class="text-muted">ljf_home</span> <a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a><a class="tag" taget="_blank" href="/search/jsp%E5%8D%A1%E6%AD%BB/1.htm">jsp卡死</a><a class="tag" taget="_blank" href="/search/js%E5%8D%A1%E6%AD%BB/1.htm">js卡死</a> <div>使用Eclipse编辑jsp、js文件时,经常出现卡死现象,在网上百度了N次,经过N次优化调整后,卡死现象逐步好转,具体那个方法起到作用,不太好讲。将所有用过的方法罗列如下:   1、取消验证 windows–>perferences–>validation 把 除了manual 下面的全部点掉,build下只留 classpath dependency Valida</div> </li> <li><a href="/article/3671.htm" title="MySQL编程中的6个重要的实用技巧" target="_blank">MySQL编程中的6个重要的实用技巧</a> <span class="text-muted">tomcat_oracle</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a> <div>每一行命令都是用分号(;)作为结束 对于MySQL,第一件你必须牢记的是它的每一行命令都是用分号(;)作为结束的,但当一行MySQL被插入在PHP代码中时,最好把后面的分号省略掉,例如: mysql_query("INSERT INTO tablename(first_name,last_name)VALUES('$first_name',$last_name')"); </div> </li> <li><a href="/article/3798.htm" title="zoj 3820 Building Fire Stations(二分+bfs)" target="_blank">zoj 3820 Building Fire Stations(二分+bfs)</a> <span class="text-muted">阿尔萨斯</span> <a class="tag" taget="_blank" href="/search/Build/1.htm">Build</a> <div> 题目链接:zoj 3820 Building Fire Stations 题目大意:给定一棵树,选取两个建立加油站,问说所有点距离加油站距离的最大值的最小值是多少,并且任意输出一种建立加油站的方式。 解题思路:二分距离判断,判断函数的复杂度是o(n),这样的复杂度应该是o(nlogn),即使常数系数偏大,但是居然跑了4.5s,也是醉了。 判断函数里面做了3次bfs,但是每次bfs节点最多</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><script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>