kbone 高级 - 自定义 app

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!

需要体系化学习资料的朋友,可以加我V获取:vip204888 (备注网络安全)

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以点击这里获取

// … other options
}


#### 1.2 修改 webpack 插件配置


在 webpack 配置补完入口,还需要在 mp-webpack-plugin 这个插件的配置中补充说明,不然 kbone 会将 miniprgram-app 入口作为页面处理。



module.exports = {
generate: {
appEntry: ‘miniprogram-app’,
},
// … other options
}


如上,将 webpack 构建中的入口名称设置在插件配置的 generate.app 字段上,那么构建时 kbone 会将这个入口的构建作为 app.js 处理。


#### 1.3 补充 src/app.js



// 自定义 app.wxss
import ‘./app.css’

App({
onLaunch(options) {},
onShow(options) {
// 获取当前页面实例
const pages = getCurrentPages() || []
const currentPage = pages[pages.length - 1]

// 获取当前页面的 window 对象和 document 对象
if (currentPage) {
  console.log(currentPage.window)
  console.log(currentPage.document)
}

},
onHide() {},
onError(err) {},
onPageNotFound(options) {},
})



> 
>  PS:app.js 不属于任何页面,所以没有真正的 window 和 document 对象,所有依赖这两个对象实现的代码在这里无法被直接使用。 
> 


#### 2、案例


在 `kbone-advanced` 目录下创建 `06-custom-app.js-app.css` 目录,本案例在这个目录下完成。


#### 2.1 创建 package.json



cd 06-custom-app.js-app.css
npm init -y


编辑 package.json:



{
“scripts”: {
“mp”: “cross-env NODE_ENV=production webpack --config build/webpack.mp.config.js --progress --hide-modules”
},
“dependencies”: {
“add”: “^2.0.6”,
“vue”: “^2.5.11”
},
“browserslist”: [
“> 1%”,
“last 2 versions”,
“not ie <= 8”
],
“devDependencies”: {
“babel-core”: “^6.26.0”,
“babel-loader”: “^7.1.2”,
“babel-preset-env”: “^1.6.0”,
“babel-preset-stage-3”: “^6.24.1”,
“cross-env”: “^5.0.5”,
“css-loader”: “^0.28.7”,
“extract-text-webpack-plugin”: “^3.0.2”,
“file-loader”: “^1.1.4”,
“html-webpack-plugin”: “^4.0.0-beta.5”,
“mini-css-extract-plugin”: “^0.5.0”,
“optimize-css-assets-webpack-plugin”: “^5.0.1”,
“stylehacks”: “^4.0.3”,
“vue-loader”: “^15.7.0”,
“vue-template-compiler”: “^2.6.10”,
“webpack”: “^4.29.6”,
“webpack-cli”: “^3.2.3”,
“mp-webpack-plugin”: “latest”
}
}


安装依赖包:



npm install


#### 2.2 配置 webpack


在 06-custom-app.js-app.css/build 目录下创建 webpack.mp.config.js,内容如下:



const path = require(‘path’)
const webpack = require(‘webpack’)
const MiniCssExtractPlugin = require(‘mini-css-extract-plugin’)
const { VueLoaderPlugin } = require(‘vue-loader’)
const OptimizeCSSAssetsPlugin = require(‘optimize-css-assets-webpack-plugin’);
const TerserPlugin = require(‘terser-webpack-plugin’)
const MpPlugin = require(‘mp-webpack-plugin’) // 用于构建小程序代码的 webpack 插件

const isOptimize = false // 是否压缩业务代码,开发者工具可能无法完美支持业务代码使用到的 es 特性,建议自己做代码压缩

module.exports = {
mode: ‘production’,
entry: {
‘miniprogram-app’: path.resolve(__dirname, ‘…/src/app.js’),

page1: path.resolve(__dirname, '../src/page1/main.mp.js')

},
output: {
path: path.resolve(__dirname, ‘…/dist/mp/common’), // 放到小程序代码目录中的 common 目录下
filename: ‘[name].js’, // 必需字段,不能修改
library: ‘createApp’, // 必需字段,不能修改
libraryExport: ‘default’, // 必需字段,不能修改
libraryTarget: ‘window’, // 必需字段,不能修改
},
target: ‘web’, // 必需字段,不能修改
optimization: {
runtimeChunk: false, // 必需字段,不能修改
splitChunks: { // 代码分隔配置,不建议修改
chunks: ‘all’,
minSize: 1000,
maxSize: 0,
minChunks: 1,
maxAsyncRequests: 100,
maxInitialRequests: 100,
automaticNameDelimiter: ‘~’,
name: true,
cacheGroups: {
vendors: {
test: /[\/]node_modules[\/]/,
priority: -10
},
default: {
minChunks: 2,
priority: -20,
reuseExistingChunk: true
}
}
},

minimizer: isOptimize ? [
  // 压缩CSS
  new OptimizeCSSAssetsPlugin({
    assetNameRegExp: /\.(css|wxss)$/g,
    cssProcessor: require('cssnano'),
    cssProcessorPluginOptions: {
      preset: ['default', {
        discardComments: {
          removeAll: true,
        },
        minifySelectors: false, // 因为 wxss 编译器不支持 .some>:first-child 这样格式的代码,所以暂时禁掉这个
      }],
    },
    canPrint: false
  }),
  // 压缩 js
  new TerserPlugin({
    test: /\.js(\?.*)?$/i,
    parallel: true,
  })
] : [],

},
module: {
rules: [
{
test: /.cssKaTeX parse error: Expected 'EOF', got '}' at position 98: … ], }̲, { …/,
loader: [
‘vue-loader’,
],
},
{
test: /.jsKaTeX parse error: Expected 'EOF', got '}' at position 93: …modules/ }̲, { …/,
loader: ‘file-loader’,
options: {
name: ‘[name].[ext]?[hash]’
}
}
]
},
resolve: {
extensions: [‘*’, ‘.js’, ‘.vue’, ‘.json’]
},
plugins: [
new webpack.DefinePlugin({
‘process.env.isMiniprogram’: process.env.isMiniprogram, // 注入环境变量,用于业务代码判断
}),
new MiniCssExtractPlugin({
filename: ‘[name].wxss’,
}),
new VueLoaderPlugin(),
new MpPlugin(require(‘./miniprogram.config.js’)),
],
}


在 06-custom-app.js-app.css/build 目录下创建 miniprogram.config.js,内容如下:



module.exports = {
origin: ‘https://test.miniprogram.com’,
entry: ‘/’,
router: {
page1: [‘/a’]
},
redirect: {
notFound: ‘page1’,
accessDenied: ‘page1’,
},
generate: {
appEntry: ‘miniprogram-app’,
// 构建完成后是否自动安装小程序依赖。‘npm’:使用 npm 自动安装依赖
autoBuildNpm: ‘npm’
},
runtime: {
cookieStore: ‘memory’,
},
app: {
navigationBarTitleText: ‘miniprogram-project’,
},
global: {
share: true,
},
pages: {
page1: {
extra: {
navigationBarTitleText: ‘page1’,
},
},
},
projectConfig: {
appid: ‘’,
projectname: ‘custom-app.js-app.css’,
},
packageConfig: {
author: ‘wechat-miniprogram’,
},
}


#### 2.3 创建 app.js 相关文件


在 `/src/` 下创建 `app.js` 文件,内容如下:





**在结束之际,我想重申的是,学习并非如攀登险峻高峰,而是如滴水穿石般的持久累积。尤其当我们步入工作岗位之后,持之以恒的学习变得愈发不易,如同在茫茫大海中独自划舟,稍有松懈便可能被巨浪吞噬。然而,对于我们程序员而言,学习是生存之本,是我们在激烈市场竞争中立于不败之地的关键。一旦停止学习,我们便如同逆水行舟,不进则退,终将被时代的洪流所淘汰。因此,不断汲取新知识,不仅是对自己的提升,更是对自己的一份珍贵投资。让我们不断磨砺自己,与时代共同进步,书写属于我们的辉煌篇章。**


需要完整版PDF学习资源

**需要体系化学习资料的朋友,可以加我V获取:vip204888 (备注网络安全)**

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以点击这里获取](https://bbs.csdn.net/topics/618540462)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

断磨砺自己,与时代共同进步,书写属于我们的辉煌篇章。**


需要完整版PDF学习资源

**需要体系化学习资料的朋友,可以加我V获取:vip204888 (备注网络安全)**

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以点击这里获取](https://bbs.csdn.net/topics/618540462)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值