React应用中使用Bootstrap的方法


Posted in Javascript onAugust 15, 2017

前言

本节我们将把bootstrap,font-awesome应用到app中,同时创建一个基本的主页。主要将用到以下包:

  • bootstrap-loader及配合工作的一系列loader:bootstrap-sass(bootstrap3) css-loader node-sass sass-loader style-loader url-loader.具体使用见官方文档
  • postcss-loader autoprefixer:自动添加-webkit-box等前缀
  • react-bootstrap:在react使用bootstrap组件

bootstrap-loader配置

在webpack的entry入口处添加bootstrap的引用

entry: [
    'bootstrap-loader',
  path.resolve(projectRootPath,'src/app.js')
 ]

然后在应用目录下添加.bootstraprc配置文件,对要用到的组件进行选择,怎么配置在官方文档中有非常详细的配置说明及模板。可以直接使用。

然后在webpack的配置文件module.loaders中添加css,woff2,tff等文件的加载功能

loaders:[
 {
  test:/\.js$/,
  exclude:/node_modules/,
  loader:'babel-loader',
  query:{
   presets:['es2015','react','stage-0'],
   plugins:['transform-decorators-legacy']
  }
 },
 {test:/\.css$/,loader:'style!css'},
 { test: /\.scss$/, 
  loader: 'style!css?modules&importLoaders=2&sourceMap&localIdentName=[local]___[hash:base64:5]!postcss-loader!sass?outputStyle=expanded&sourceMap'
 },
 {
  test: /\.woff2?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
  loader: "url?limit=10000"
 },
 {
  test: /\.(ttf|eot|svg)(\?[\s\S]+)?$/,
  loader: 'file'
 } 
]loaders:[
 {
  test:/\.js$/,
  exclude:/node_modules/,
  loader:'babel-loader',
  query:{
   presets:['es2015','react','stage-0'],
   plugins:['transform-decorators-legacy']
  }
 },
 {test:/\.css$/,loader:'style!css'},
 { test: /\.scss$/, 
  loader: 'style!css?modules&importLoaders=2&sourceMap&localIdentName=[local]___[hash:base64:5]!postcss-loader!sass?outputStyle=expanded&sourceMap'
 },
 {
  test: /\.woff2?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
  loader: "url?limit=10000"
 },
 {
  test: /\.(ttf|eot|svg)(\?[\s\S]+)?$/,
  loader: 'file'
 } 
]

最后可以在.bootstraprc中做些css样式的配置,以替换原来的css,这里简单介绍几个:

首先,在src中新建目录theme用于存放所有与css相关的文件

preBootstrapCustomizations

定义一些能变量,可以在app直接使用

preBootstrapCustomizations: ./src/theme/variables.scss

src/theme/variables.scss主要是定义了一些与颜色相关的变量

// 自己定义颜色
$cyan: #33e0ff;
$humility: #777;

// Bootstrap 变量
$brand-primary: darken(#428bca, 6.5%);
$brand-secondary: #e25139;
$brand-success: #5cb85c;
$brand-warning: #f0ad4e;
$brand-danger: #d9534f;
$brand-info: #5bc0de;

$text-color: #333;

$font-size-base: 14px;
$font-family-sans-serif: "Helvetica Neue", Helvetica, sans-serif;

bootstrapCustomizations

自定义样式,在preBootstrapCustomizations加载后,所有可以在其中使用preBootstrapCustomizations定义的变量

appStyles

bootstrap加载后,最后加载里面的样式,这里可以重写一些bootstrap样式

appStyles: ./src/theme/bootstrap.overrides.scss

src/theme/bootstrap.overrides.scss重新定义了一些样式

.navbar-brand {
 position: relative;
 padding-left: 50px;
}

.navbar-default .navbar-nav > .active > a,
.navbar-default .navbar-nav > .active > a:hover,
.navbar-default .navbar-nav > .active > a:focus {
 color: #33e0ff;
 background-color: transparent;
}

应用

打开我们的scr/containers/App/App.js现在添加一个bootstrap样式的导航条吧

这里我们添加了两个文件App.scss(App目录中)样式,图片logo.png(Home目录中),代码我就不贴了,CSS不是我们目的,可以自己在源码中看,非常简单

import React,{Component, PropTypes} from 'react'
import {IndexLink} from 'react-router' //主页路由

import { Navbar, Nav, NavItem } from 'react-bootstrap'; // 导航组件

export default class App extends Component {

 render(){
  const styles = require('./App.scss') //scss的样式
  return(
   <div className={styles.app}>
    <Navbar fixedTop>
     <Navbar.Header>
      <Navbar.Brand> //注意这里,就用了我们重写的navbar-brand
       <IndexLink to="/" activeStyle={{color: '#33e0ff'}}>
        <div className={styles.brand}/>
        <span>React Redux Example</span>
       </IndexLink>
      </Navbar.Brand>
      <Navbar.Toggle/>
     </Navbar.Header>
    </Navbar>
    <div className={styles.appContent}>{this.props.children}</div>
    <div>App footer</div>
   </div>
  )
 }
}

最终效果如图

React应用中使用Bootstrap的方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript编程起步(第四课)
Feb 27 Javascript
jQuery用unbind方法去掉hover事件及其他方法介绍
Mar 18 Javascript
js动态添加删除,后台取数据(示例代码)
Nov 25 Javascript
jQuery绑定自定义事件的魔法升级版
Jun 30 Javascript
jQuery实现弹出窗口弹出div层的实例代码
Jan 09 Javascript
原生js实现图片放大缩小计时器效果
Jan 20 Javascript
js获取浏览器和屏幕的各种宽度高度
Feb 22 Javascript
ionic2 tabs 图标自定义实例
Mar 08 Javascript
npm国内镜像 安装失败的几种解决方案
Jun 04 Javascript
详解使用Nuxt.js快速搭建服务端渲染(SSR)应用
Mar 13 Javascript
微信小程序如何实现点击图片放大功能
Jan 21 Javascript
原生js实现购物车
Sep 23 Javascript
JavaScript函数中的this四种绑定形式
Aug 15 #Javascript
详解react使用react-bootstrap当轮子造车
Aug 15 #Javascript
JScript实现表格的简单操作
Aug 15 #Javascript
AngularJS日程表案例详解
Aug 15 #Javascript
jQuery实现菜单栏导航效果
Aug 15 #jQuery
js实现网页的两个input标签内的数值加减(示例代码)
Aug 15 #Javascript
JScript实现地址选择功能
Aug 15 #Javascript
You might like
PHP实例分享判断客户端是否使用代理服务器及其匿名级别
2014/06/04 PHP
php最简单的删除目录与文件实现方法
2014/11/28 PHP
php设计模式之装饰模式应用案例详解
2019/06/17 PHP
javascript 最常用的10个自定义函数[推荐]
2009/12/26 Javascript
网页打开自动最大化的js代码
2012/08/22 Javascript
javascript两种function的定义介绍及区别说明
2013/05/02 Javascript
js+csss实现的一个带复选框的下拉框
2014/09/29 Javascript
javascript中Array数组的迭代方法实例分析
2015/02/04 Javascript
JavaScript通过prototype给对象定义属性用法实例
2015/03/23 Javascript
js实现仿爱微网两级导航菜单效果代码
2015/08/31 Javascript
Jquery常用的方法汇总
2015/09/01 Javascript
jquery带有索引按钮且自动轮播切换特效代码分享
2015/09/15 Javascript
EasyUi combotree 实现动态加载树节点
2016/04/01 Javascript
jquery实现左右无缝轮播图
2020/07/31 Javascript
原生JS:Date对象全面解析
2016/09/06 Javascript
微信小程序 跳转方式总结
2017/04/20 Javascript
react native 原生模块桥接的简单说明小结
2019/02/26 Javascript
浅析JS中NEW的实现原理及重写
2020/02/20 Javascript
使用vue打包进行云服务器上传的问题
2020/03/02 Javascript
js点击事件的执行过程实例分析【冒泡与捕获】
2020/04/11 Javascript
python中input()与raw_input()的区别分析
2016/02/27 Python
Python基于Floyd算法求解最短路径距离问题实例详解
2018/05/16 Python
selenium+python自动化测试之鼠标和键盘事件
2019/01/23 Python
人工神经网络算法知识点总结
2019/06/11 Python
python爬虫 爬取58同城上所有城市的租房信息详解
2019/07/30 Python
python如何安装下载后的模块
2020/07/03 Python
Python二元算术运算常用方法解析
2020/09/15 Python
一张图片能隐含千言万语之隐藏你的程序代码
2012/12/13 HTML / CSS
通信工程专业个人找工作求职信范文
2013/09/21 职场文书
家长写给老师的建议书
2014/03/13 职场文书
医院节能减排方案
2014/06/13 职场文书
体育教育毕业生自荐信
2014/06/29 职场文书
员工2014年度工作总结
2014/12/09 职场文书
详解JS ES6编码规范
2021/05/07 Javascript
Python代码风格与编程习惯重要吗?
2021/06/03 Python
idea 在springboot中使用lombok插件的方法
2021/08/02 Java/Android