搭建文字推荐:
www.jianshu.com/p/8d070e2b3…
报错缘由:因为next.js是服务端渲染,服务端渲染没有window、document、、、,bizcharts在渲染时须要获取document元素获取宽度等信息
解决方案:采用process.browser判断bizcharts渲染
举个🌰node
import React from "react";
let bizcharts;
if (process.browser) {
bizcharts = require('bizcharts');
}
const defaultData = [
{
month: "0903-0912",
city: "美拍",
temperature: 3.56
},
{
month: "0903-0918",
city: "美拍",
temperature: 11.9
}, {
month: "0903-0912",
city: "小红书",
temperature: 8.5
},
{
month: "0903-0918",
city: "小红书",
temperature: 11.6
},
];
class CurveLine extends React.Component {
render() {
const { data = defaultData, height, width, padding = [60, 50] } = this.props
const cols = {
month: {
range: [0, 1]
}
};
return (
process.browser && <div>
<bizcharts.Chart height={height || 400} width={width || 300} data={data} scale={cols} padding={padding}>
<bizcharts.Legend position='top'
offsetY={-20}
marker='circle'
textStyle={{
textAlign: 'start', // 文本对齐方向,可取值为: start middle end
fill: '#404040', // 文本的颜色
fontSize: '12', // 文本大小
//fontWeight: 'bold', // 文本粗细
//rotate: 30, // 文本旋转角度,以角度为单位,仅当 autoRotate 为 false 时生效
//textBaseline: 'top' // 文本基准线,可取 top middle bottom,默认为middle
}} />
<bizcharts.Axis name="month" />
<bizcharts.Axis name="temperature" />
<bizcharts.Tooltip
crosshairs={{
type: "y"
}}
/>
<bizcharts.Geom
type="line"
position="month*temperature"
size={2}
color={"city"}
shape={"smooth"}
/>
</bizcharts.Chart>
</div>
);
}
}
export default CurveLine
复制代码
问题描述:输入input时页面总体放大,输入完成后,页面只显示中间放大区域,其余位置要手动缩小才能显示原始页面
解决方案:在公共区域引入,控制meta的配置react
import Head from 'next/head'
//在公共区域引入,例如布局header 中
<Head>
{/* 关闭苹果的自动放大 */}
<meta content="yes" name="apple-mobile-web-app-capable" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
</Head>
复制代码
yarn add dotenv //能够使得Node.js从文件中加载环境变量的库
yarn add express //重定向
yarn add http-proxy-middleware//代理中间件
复制代码
module.exports = {
'/api': {
target: '运行环境地址',
// pathRewrite: { '^/api': '/' },
changeOrigin: true
}
}
复制代码
ENV_API_HOST='转发接口地址'复制代码
require('dotenv').config()
const express = require('express')
const next = require('next')
const fs = require('fs')
const port = parseInt(process.env.PORT, 10) || 3000
const env = process.env.NODE_ENV
const dev = env !== 'production'
const app = next({ dir: '.', dev })
const handle = app.getRequestHandler()
let server;
app.prepare().then(() => {
server = express()
// 设置转发
if (fs.existsSync('./proxy.js')) {
const proxyConf = require('./proxy')
const proxyMiddleware = require('http-proxy-middleware')
Object.keys(proxyConf).forEach(function (context) {
server.use(proxyMiddleware(context, proxyConf[context]))
})
}
server.all('*', (req, res) => handle(req, res))
server.listen(port, err => {
if (err) {
throw err
}
console.log(`> Ready on port ${port} [${env}]`)
})
})
.catch(err => {
console.log('An error occurred, unable to start the server')
console.log(err)
})
复制代码
"scripts": {
"dev": "node server.js",
"build": "next build",
"start": "NODE_ENV=production node server.js"
}
复制代码
<script src="https://polyfill.io/v3/polyfill.js?features=es5,es6,es7&flags=gated"/>复制代码
function changeScoll(number) {
document.getElementById('js-moblie-marketing-overflow-id').scroll(number, 100)
let dom = document.getElementById('js-moblie-marketing-overflow-id')
dom && dom.scroll && dom.scroll(number, 100)
}复制代码
config.module.rules.push({
exclude: [/node_modules\/(?!(swiper|dom7|next|chalk|ansi-styles)\/).*/, /\.test\.js(x)?$/],
test: /\.js(x)?$/,
use: [options.defaultLoaders.babel],
})
复制代码