整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          Rust跨界前端全攻略

          作者 | Diomidis Spinellis
          譯者 | 馬超 責編 | 張紅月
          出品 | CSDN(ID:CSDNnews)

          眾所周知Rust的學習曲線極為陡峭,學習過程中挫敗感極強,像筆者這樣有十幾年開發經驗的人也要經常需要好幾天時間才能長度搞清楚一個小小的細節問題,具體可以參見前文《從內存布局上看,Rust的胖指針到底胖在棧上還是胖在堆上》。因此在學習掌握Rust的過程中還是需要一些沒那么硬核的知識點進行穿插、點綴的。

          Nicolas Frankel一直是我非常關注的Rust技術專欄作者之一,近期我看到他的一篇有關于Rust與JS結合搭建Serverless WebAssembly的文章,立刻感覺眼前一亮,這篇文章當中沒有那些繁鎖的權限傳遞機制、智能指針等項目,只要跟著作者的代碼樣例進行模仿就行了,而且這方面的知識也比較實用,不失為一篇在學習中途中可以放松一下轉換心情的好文章,下面就帶大家奇文共賞。

          我們知道JavaScript是前端方面唯一個算得上是通用的語言,各種前端流行框架本質上都是基于JavaScript。雖然為前端生的JavaScript存在很多儲如性能、并發等方面的先天不足,但是也應該看到JavaScript 開發者社群還在大幅增長,圍繞前端 JavaScript 的生態也是日益繁榮,而且前端技術變化很快,幾年前還稱霸一時的Flash幾乎直線墜落,完全被H5干掉,從NodeJS、DENO到Vue.js,各種新框架也是不斷涌現,也讓大家應接不暇,可以說JS體系的繁榮是有目共睹的。

          雖然有關語言優劣的爭論大多是沒有作何實際意義的,但不可否認的是JavaScript往往處在編程語言鄙視鏈的底端,很多程序員都認為JS之所以能幸存下來,是因為它將執行腳本代碼的責任從服務器轉移到客戶端,這樣就減輕了服務器上的很大壓力。不過相對而言,客戶端的壓力卻因此大大增加了,想提升上網體驗前端程序員幾乎只能建議用戶去購買功能更強大而且價格昂貴的手機、PAD或者PC。而想要優化JavaScript 引擎似乎還得靠Rust才能做到。在介紹下面的方案之前,我們先來認識一下WebAssembly。

          WebAssembly(縮寫為 Wasm)是一種用于基于堆棧的虛擬機的二進制指令格式。Wasm 被設計為編程語言的可移植編譯目標,支持在 Web 上部署客戶端和服務器應用程序。

          總得來說Wasm并非要取代JavaScript,而是指在提高前后端交互的整體性能。盡管Rust多用于后端,但它的特性確實有助于提升WebAssembly的編譯、啟動及運行速度,下面我們就一起來感受一下Rust+Wasm的強大威力。


          Rust 和 WebAssembly

          第一個 Rust 項目

          我們第一個步驟側重于讓大家了解設置方法,這是一個Ctrl+C、Ctrl+V式復制粘貼項目。這個項目利用一個高效的Cargo 插件cargo-generate來提升項目管理效率,它允許使用現有的 Git 存儲庫作為模板來創建新項目。在本例中,模板是一個待編譯的 Wasm Rust項目。具體項目的樹形結構如下:

          這是非常典型的Rust項目結構?,F在我們來看一下Cargo.toml文件。

          • [package] name = "wasm-game-of-life"version = "0.1.0"authors = ["Nicolas Frankel <nicolas@frankel.ch>"]edition = "2018"
            [lib] crate-type = ["cdylib", "rlib"]
            [features]default = ["console_error_panic_hook"]
            [dependencies]wasm-bindgen = "0.2.63"
            # Rest of the file omitted for clarity purposes

            這里Cargo.toml其實發揮了前端項目中pom.xml的作用,這里列出有關包、依賴項、編譯提示等的元信息,并定義與Wasm的依賴關系。當然截止目前這個項目還不是很有趣,不過我們會慢慢來建立一個項目,使Wasm的Rust代碼能夠高效交互。

            接下來讓運行命令:

            npm init wasm-app www

            你會看到以下輸出結構:

            • wasm-game-of-life/└── www/ ├── package.json  ├── webpack.config.js  ├── index.js  ├── bootstrap.js  └── index.html

              其中webpack.config.js是調用 Wasm 代碼的入口點,index.js是異步加載器包裝器。進行完上述步驟后,接下來只要我們完成以下四步,就可以執行整個Wasm代碼鏈。

              1. 將 Rust 代碼編譯為 Wasm

              2. 生成 JavaScript 適配器代碼

              3. 安裝NPM 依賴項 npm install

              4. 執行npm run start

              瀏覽到http://localhost:8080會顯示一條簡單的alert()消息。

              在帶著廣大讀者們重新做一遍教程之前,筆者這里先給出一些有意義的結論。也就是Wsam+Rust的結合過程中,可以歸結為以下三步:

              1. 從 JavaScript 調用 Rust

              2. 從 Rust 調用 JavaScript

              3. 從 Rust 調用瀏覽器 API


              從 JavaScript 調用 Rust


              好接下來我們就一點一點學習這些步驟,要從 JavaScript 調用 Rust,需要將 Rust 代碼編譯為 Wasm 并提供瘦 JavaScript 包裝器。在Rust方面具體方案如下:

              • #[wasm_bindgen] pub fn foo() { // do something}

                在 JavaScript 代碼方面示例如下:

              import * as wasm from "hello-wasm-pack"; wasm.foo();

              將hello-wasm-pack包中的所有內容導入wasm命名空間之后,用戶就可以調用foo()函數了。


              從 Rust 調用 JavaScript


              Rust 調用 JavaScript 函數時需要通過extern關鍵字聲明使用外部函數接口,具體如下:

              • #[wasm_bindgen]extern "C" {  #[wasm_bindgen(js_namespace = Math)]  fn random() -> f64;}
                #[wasm_bindgen]fn random_boolean() -> bool { random() < 0.5 }

                注意雖然這里關鍵字是extern "C",但這并不是 C 代碼,Rust中這就是正確的語法,因此我們只要用它就可以了。接下來需要進行有關js沙箱(js-sys crate)的設置工作,如果要詳細了解相關內容,可以參考以下鏈接:

                https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects

                接下來需要將js-sys添加到cargo.toml當中,具體如下::

                Cargo.toml

                • [dependencies]js-sys = { version = "0.3.50", optional = true } [features]default = ["js-sys"]

                  上述配置將允許以下代碼在js沙箱中使用:

                  • use js_sys::Math; 
                    #[wasm_bindgen]fn random_boolean() -> bool { Math::random() < 0.5 }

                    上述代碼中的Math.random()語句會在在運行時實現由rust調JavaScript的目標。


                    從 Rust 調用瀏覽器 API


                    當然只是調用JavaScript還是不夠的,因為很多客戶端API,如console.log(),需要調用瀏覽器API。

                    下面是配置方案:

                    Cargo.toml

                  [dependencies]web-sys = { version = "0.3", features = ["console"] }

                  配置完成后我們就可以通過以下樣例來調用瀏覽器API:

                  wasm.rs

                  • extern crate web_sys; use web_sys::console; #[wasm_bindgen]impl Foo { pub fn new() -> Foo { utils::set_panic_hook(); Universe {} } pub fn log(&self) { console::log_1("Hello from console".into());  }}


                    結論


                    我們在重復一下之前的要點,在前端使用Rust 的三大要決分別是:從 JavaScript 調用 Rust,從 Rust 調用 JavaScript,從 Rust 調用瀏覽器 API。

                    原文地址:https://blog.frankel.ch/start-rust/5/

                    源碼地址:https://github.com/ajavageek/rust-game-of-life

                    聲明:本文由CSDN翻譯,轉載請注明來源。

          ue中pc端與移動端適配解決方案

          0. 前言

          當涉及屏幕適配方案時,我們常常被眾多選擇所困擾,如postcss-pxtorem、postcss-px2rem、px2rem-loader、postcss-plugin-px2rem等。然而,在實際測試中,由于不同的Vue和Webpack版本,很多這些方式已經無法使用,反而帶來了更多麻煩。

          為了盡快解決問題,我們應該始終以解決問題為導向,首先采用那些已經獲得驗證并能產生效果的方法。對于上述列舉的方案,雖然沒有一一測試過,但我們需要明確的是,抓住解決問題的關鍵。

          針對移動端和PC端適配,我建議將兩者進行拆分并進行工程化配置,以避免整體框架調整后在某些頁面上出現輕微不協調。在某些情況下,你可能會注意到筆記本電腦上顯示比例縮放后的細微差異,這可以通過插入【整體縮放自適應解決方案(阿里團隊高清方案)的JS代碼】來解決。

          1.移動端適配方案

          1.1 基礎概念

          viewport即視窗、視口,用于顯示網頁部分的區域,在PC端視口即是瀏覽器窗口區域,在移動端,為了讓頁面展示更多的內容,視窗的寬度默認不為設備的寬度,在移動端視窗有三個概念:布局視窗、視覺視窗、理想視窗。

          • 布局視窗:在瀏覽器窗口css的布局區域,布局視口的寬度限制css布局的寬。為了能在移動設備上正常顯示那些為pc端瀏覽器設計的網站,移動設備上的瀏覽器都會把自己默認的viewport設為980px或其他值,一般都比移動端瀏覽器可視區域大很多,所以就有橫向滾動條。
          • 視覺視窗:終端設備顯示網頁的區域。
          • 理想視窗:針對當前設備最理想的展示頁面的視窗,不會出現橫向滾動條,頁面剛好全部展現在視窗內,理想視窗即終端屏幕的寬度。

          viewport詳細設置:

          • 通過設置viewport可以設置頁面大小,通過meta標簽可以設置viewport信息。
          • viewport有以下幾個屬性:
            • width:視口的寬度,正整數或設備寬度device-width(width=device-width)
            • height:視口高度,正整數或device-height
            • initial-scale(initial-scale=1.0):網頁初始縮放值,小數縮小,反之放大(initial-scale=1.0)
            • maximum-scale(maximum-scale=1.0):設置頁面的最大縮放比例
            • minimum-scale(minimum-scale=1.0): 設置頁面的最小縮放比例
            • user-scaleble(user-scalable=no):用戶是否可以縮放

          移動端默認會縮放大尺寸的頁面的,當我們把上述代碼去掉之后,就會隨著移動端縮放的比例走,而且還可以自由放大。

          1.1.1 解決方案一viewport縮放

          方案統計:

          1. 設置viewport進行縮放
          2. PC端適配移動端可以通過html標簽重meta name="viewport"調整視口比例,進行頁面縮放。 不過有部分同學使用過程中反應縮放會導致有些頁面元素會糊的情況。

          代碼原理:

          1. 根據設備屏幕的DPR(設備像素比,比如dpr=2時,表示1個CSS像素由2X2個物理像素點組成) 動態設置 html 的font-size
          2. 同時根據設備DPR調整頁面的縮放值,進而達到高清效果。
          //  僅在移動端時候生效,或者瀏覽器手機模式
          //  整體縮放自適應解決方案(阿里團隊高清方案) 淘寶m端使用的解決方案
          ! function (e) {
              function t(a) {
                if (i[a]) return i[a].exports;
                var n = i[a] = {
                  exports: {},
                  id: a,
                  loaded: !1
                };
                return e[a].call(n.exports, n, n.exports, t), n.loaded = !0, n.exports
              }
              var i = {};
              return t.m = e, t.c = i, t.p = "", t(0)
            }([function (e, t) {
              "use strict";
              Object.defineProperty(t, "__esModule", {
                value: !0
              });
              var i = window;
              t["default"] = i.flex = function (e, t) {
                var a = e || 100,
                  n = t || 1,
                  r = i.document,
                  o = navigator.userAgent,
                  d = o.match(/Android[\S\s]+AppleWebkit/(\d{3})/i),
                  l = o.match(/U3/((\d+|.){5,})/i),
                  c = l && parseInt(l[1].split(".").join(""), 10) >= 80,
                  p = navigator.appVersion.match(/(iphone|ipad|ipod)/gi),
                  s = i.devicePixelRatio || 1;
                p || d && d[1] > 534 || c || (s = 1);
                var u = 1 / s,
                  m = r.querySelector('meta[name="viewport"]');
                m || (m = r.createElement("meta"), m.setAttribute("name", "viewport"), r.head.appendChild(m)), m
                  .setAttribute("content", "width=device-width,user-scalable=no,initial-scale=" + u + ",maximum-scale=" +
                    u + ",minimum-scale=" + u), r.documentElement.style.fontSize = a / 2 * s * n + "px"
              }, e.exports = t["default"]
            }]);
            flex(100, 1);
          
          //  高清方案默認1rem=100px,那么 btn的寬度就設置為:)
          .btn {
              width:0.8rem
              height:1.2rem
          }
          
          


          1. 根據設備屏幕的DPR,自動設置最合適的高清縮放。保證了不同設備下視覺體驗的一致性。 舊方案,屏幕越大,元素也越大,新方案,屏幕越大,看到的越多 看得越多的理解: 比如,一篇很長的文章在ip4上,一屏盛不了那么多內容,而在ip6plus上,可以全部看清楚,這是因為,新方案會根據dpr來縮放視口,大屏小屏的手機上,顯示的字體大小都是一致的,當然在大屏上看到的東西就多咯~
          2. 有效解決移動端真實1px問題(這里的1px 是設備屏幕上的物理像素)

          【7】 移動端開發自適應解決方案(阿里團隊高清方案)

          1.1.2 解決方案二—兩套頁面

          同時兼任pc和移動適配

          通過配置兩套不同路由和判斷是否是移動端實現

          核心代碼:router.addRoute(isMobile() ? mobileRoutes[1] : pcRoutes[1]);(區分路由)

          1.1.3 解決方案三—postcss-pxtorem、amfe-flexible

          搭配工程化,可以參考第二章【PC端適配方案】

          npm i postcss-pxtorem --save-dev
          ?
          //使用postcss-pxtorem
          module.exports = {
              lintOnSave:true,
              css:{
                  loaderOptions:{
                      postcss:[
                          require('postcss-pxtorem')({
                              rootValue:16,//根元素字體大小
                              unitPrecision:5, //允許rem單位增長的十進制數字
                              replace:true, //替換包含rems的規則,而不添加后備
                              mediaQuery:false, //允許在媒體查詢中轉換px
                              minPixelValue:0, //設置要替換的最小像素值
                              selectorBlackList:[], //忽略轉換正則匹配項
                              propList:['*'], //可以從px轉換為rem的屬性,匹配正則
                              exclude:/node_modules/i  要忽略并保留為px的文件路徑
                          }),
                      ]
                  }
              }
          }
          


          2.PC端適配方案

          vue項目使用element-ui框架Rem適配(postcss-pxtorem、amfe-flexible),自動轉換px為rem,解決響應式問題

          1366 * 768 : 普通液晶顯示器 1920 * 1080: 高清液晶顯示器 2560 * 1440: 2K高清顯示器 4096 * 2160: 4K高清顯示器 1280 * 720: 筆記本(1920*1080分辨率下系統默認推薦150%縮放比產生的尺寸)

          大屏數據可視化項目通常用于放在電視或廣告屏上展示用,而不允許出現滾動條

          2.1. 適配痛點難點

          設計稿按照1920*1080的分辨率,16:9的比例設計, 實際開發中,document窗口不足16:9(高度減掉頂部tab及導航欄,地址欄等) 不同分辨率:實際應用場景中,顯示場景不同,不能固定寫死px單位 不同比例:不同的顯示器寬高比與設計稿不一致

          2.2. 什么是rem

          rem是CSS3新增的相對長度單位,是指相對于根元素html的font-size計算值的大小。簡單可理解為屏幕寬度的百分比。 但是,項目中常見尺寸繪制采用的均是px,要改用rem一時半會緩不過來,而且可能還要換算轉換,所以使用rem還是比較麻煩的,但是,我們可以通過插件,能夠將項目中的px轉換為rem,還可以自定義基數。

          2.3. 安裝依賴

          npm install amfe-flexible // CSS單位自適應轉換插件 負責更改根font-size
          npm install postcss-pxtorem@^5.1.1 // 如果版本過高可以降版本下載5.1.1版本 負責將px轉成rem
          


          // 用途:echarts字體適配
          /**
           * echarts字體自適應
           * @param {*} font 字號大小
           */
          export function echartGetFontSize(font) {
              let docEl = document.documentElement,
                clientWidth =
                  window.innerWidth ||
                  document.documentElement.clientWidth ||
                  document.body.clientWidth;
              if (!clientWidth) return;
              let fontSize = clientWidth / 1920;
              return font * fontSize;
          }
          


          2.3. 引入amfe-flexible

          由于 viewport 單位得到眾多瀏覽器的兼容,lib-flexible 這個過渡方案已經可以放棄使用,不管是現在的版本還是以前的版本,都存有一定的問題。建議大家開始使用 viewport 來替代此方。(待考證?)

          amfe-flexible是lib-flexible的升級版

          flexible就是根據不同的屏幕算出html的font-size,通過js來動態寫meta標簽

          實上他做了這幾樣事情:

          • 動態改寫<meta>標簽
          • 給<html>元素添加data-dpr屬性,并且動態改寫data-dpr的值
          • 給<html>元素添加font-size屬性,并且動態改寫font-size的值

          在main.js中引入amfe-flexible

          import "amfe-flexible"
          


          amfe-flexible 等價代碼

          // import '@/utils/rem.js'
          ?
          // 在utils文件夾下創建rem.js
          // 設置 rem 函數
          function setRem() {
              // 1920 默認大小16px; 1920px = 120rem ;每個元素px基礎上/16
              const screenWidth = 1920
              const scale = screenWidth / 16
              const htmlWidth = document.documentElement.clientWidth || document.body.clientWidth
              // 得到html的Dom元素
              const htmlDom = document.getElementsByTagName('html')[0]
              // 設置根元素字體大小
              htmlDom.style.fontSize = htmlWidth / scale + 'px'
            }
            // 初始化
            setRem()
            // 改變窗口大小時重新設置 rem
            window.onresize = function() {
              setRem()
            }
          


          2.4. 配置vue.config.js

          配置postcss-pxtorem ,可在vue.config.js、postcsssrc.js、postcss.config.js、其中之一配置,權重從左到右降低,沒有則新建文件,只需要設置其中一個即可.

          /***
          注意點:
          (1)rootValue根據設計稿寬度除以10進行設置,這邊假設設計稿為1920,即rootValue設為192;
          (2)propList是設置需要轉換的屬性,這邊*為所有都進行轉換。
          ***/
          module.exports=function(){
              devServer:{
                  port:3000,
                  open:true
              },
              //rem配置
              css: {
                  loaderOptions: {
                   postcss: {
                      plugins: [
                        require('postcss-pxtorem')({
                            rootValue: 192, //根元素字體大小
                            propList: ['*'], //可以從px轉換為rem的屬性,匹配正則
                            // unitPrecision:5, //允許rem單位增長的十進制數字
                            // replace:true, //替換包含rems的規則,而不添加后備
                            // mediaQuery:false, //允許在媒體查詢中轉換px
                            // minPixelValue:0, //設置要替換的最小像素值
                            // selectorBlackList:[], //忽略轉換正則匹配項
                            // exclude:/node_modules/i  要忽略并保留為px的文件路徑
                        })
                      ]
                   }
                 }
              },
          }
          


          // 效果展示 在html上增加根font-size
          <html lang="en” style="font-size: 192px;class="light-themes">
          


          2.5. 總結

          2.5.1 注意事項:

          1. 不能使用行內樣式

          對于行內樣式,阿里手淘并不能將px轉rem,所以對于需要自適應的樣式,如font-size、width、height等請不要寫在行內。同理,對于不需要轉化的樣式可以寫在行內,或者使用PX(大寫)作為單位。

          暫未找到可以轉行內rem的插件,可根據下面地址的方式自己實現(未驗證是否可行)。blog.csdn.net/weixin_3961…

          2. 字號不使用rem

          我們都知道chrome的最小顯示的字體是12px,如果字體用rem,計算出來小于12px,那么就也會以12px顯示,而且我們不希望出現13px或者15px這樣的奇葩尺寸,所以字體最好是用PX(大寫)來表示,至于適應,我們可以寫媒體查詢。

          .item {
              border-bottom: 1PX #8d8d8d dashed;
              font-size: 12PX;
              line-height: 16PX;
              @media screen and (min-width: 576PX) {
                  font-size: 14PX;
                  line-height: 18PX;
              }
              @media screen and (min-width: 768PX) {
                  font-size: 16PX;
                  line-height: 28PX;
              }
              @media screen and (min-width: 992PX) {
                  font-size: 16PX;
                  line-height: 32PX;
              }
              @media screen and (min-width: 1200PX) {
                  font-size: 18PX;
                  line-height: 64PX;
              }
          }
          ?
          PC端響應式媒體斷點:
          ?
          ```css
             @media (min-width: 1024px){
              body{font-size: 18px}
             } /*>=1024的設備*/
          ?
             @media (min-width: 1100px) {
              body{font-size: 20px}
             } /*>=1100的設備*/
             @media (min-width: 1280px) {
              body{font-size: 22px;}
             } /*>=1280的設備*/
          ?
             @media (min-width: 1366px) {
              body{font-size: 24px;}
             }  
          ?
             @media (min-width: 1440px) {
               body{font-size: 25px !important;}
             } 
          ?
             @media (min-width: 1680px) {
              body{font-size: 28px;}
             } 
             @media (min-width: 1920px) {
              body{font-size: 33px;}
             } 
          ```
          ?
          ?
          


          2.5.2 測試反饋:

          已測試屏幕尺寸:1920*1080 、1366 * 768

          問題:屏幕縮小,網頁縮放,效果與原1920*1080不一致

          //  僅在移動端時候生效,或者瀏覽器手機模式
          //  整體縮放自適應解決方案(阿里團隊高清方案)
          ! function (e) {
              function t(a) {
                if (i[a]) return i[a].exports;
                var n = i[a] = {
                  exports: {},
                  id: a,
                  loaded: !1
                };
                return e[a].call(n.exports, n, n.exports, t), n.loaded = !0, n.exports
              }
              var i = {};
              return t.m = e, t.c = i, t.p = "", t(0)
            }([function (e, t) {
              "use strict";
              Object.defineProperty(t, "__esModule", {
                value: !0
              });
              var i = window;
              t["default"] = i.flex = function (e, t) {
                var a = e || 100,
                  n = t || 1,
                  r = i.document,
                  o = navigator.userAgent,
                  d = o.match(/Android[\S\s]+AppleWebkit/(\d{3})/i),
                  l = o.match(/U3/((\d+|.){5,})/i),
                  c = l && parseInt(l[1].split(".").join(""), 10) >= 80,
                  p = navigator.appVersion.match(/(iphone|ipad|ipod)/gi),
                  s = i.devicePixelRatio || 1;
                p || d && d[1] > 534 || c || (s = 1);
                var u = 1 / s,
                  m = r.querySelector('meta[name="viewport"]');
                m || (m = r.createElement("meta"), m.setAttribute("name", "viewport"), r.head.appendChild(m)), m
                  .setAttribute("content", "width=device-width,user-scalable=no,initial-scale=" + u + ",maximum-scale=" +
                    u + ",minimum-scale=" + u), r.documentElement.style.fontSize = a / 2 * s * n + "px"
              }, e.exports = t["default"]
            }]);
            flex(100, 1);
          
          


          2.5.3其他問題:

          1. 如果沒效果,查看根元素是否添加上了fongt-size,為添加的話查看css預處理器,如果是sass改成node-sass;我這邊使用的版本為:
          “node-sass”: “^4.9.0”,
          “sass-loader”: “^7.1.0”
          


          1. 大屏改進方案:
          2. 限制rem的最大值
          3. 通過媒體查詢,限制內容最大寬度


          作者:幸運_
          鏈接:https://juejin.cn/post/7278646930174165050

          著就能變瘦變白,是所有減肥/美白人群的終極夢想,于是很多人紛紛投向了醫療美容。

          為了滿足廣大愛美人士的需求,兩款神奇的產品誕生了——美白針、溶脂針。

          其實這兩種產品都是不合法的醫美項目,在我們國家都沒有被批準。

          如果你也種草了/做過這兩個項目,請一定要認真看這篇文章。


          動圖來源于千庫網

          美白針

          先來說說「美白針」。

          「美白針」是通過靜脈注射藥物,達到美白效果的一種手段。

          它的主要成分是傳明酸(氨甲環酸)、維C、谷胱甘肽等, 這幾個成分在化妝品里經常見到,都有一定美白作用。

          那是不是注射的效果更好呢?

          效果好不好不知道,風險是很大的。

          首先「美白針」并不是一種藥物,而是幾種不同的針劑的組合,加在一起靜脈注射。

          這幾種針劑的配比是廠家自己配制的,并沒有一個標準配比。

          這些藥物經血流向多個組織器官,必然會有藥物的主要適應癥效果產生,比如凝血

          在無凝血性障礙的情況下,注射抗纖溶藥物,是不明智的。

          其次,國家批準這些藥物(傳明酸、谷胱甘肽),并不是用于美白,而是用來治療其他疾病的。

          比如傳明酸是用來凝血的,而谷胱甘肽在臨床上是用來保肝的。

          而商家并沒有按照藥品上的指示用藥,而是根據自己的理解,用于治療美白。

          更有甚者為了達到美白效果,會加大劑量,可能會損傷腎功能,帶來很大的副作用。

          要知道其實不光是中國沒批準這類醫美項目,美國FDA也沒批準過注射用的美白產品。

          溶脂針

          再來說說「溶脂針」。

          「溶脂針」是注射入人體后,讓臉、下巴、腿變瘦的針劑。

          「溶脂針」的主要成分是磷脂酰膽堿(ppc)、利多卡因(麻醉劑)、腎上腺素生理鹽水

          主要原理是通過磷脂酰膽堿(ppc)的乳化作用將局部脂肪乳化為小顆粒,用膨脹液輔助,加快脂肪從淋巴管代謝,起到溶脂的作用。

          但溶脂針里的藥物成分利多卡因、腎上腺素等如果被血液系統吸收后,會給身體帶來不同程度的副作用,比如頭暈、惡心、心動過速、呼吸困難、血壓下降等。

          當麻醉劑用量過大時,也存在生命危險。

          而且溶脂針沒有有效地降低脂肪細胞數量,如果不控制飲食的話,還是會反彈的。

          動圖來源于soogif

          在國外,有部分品牌的溶脂針獲得了批文,可以注射使用(例如祛除雙下巴),但它在成分、治療效果、安全方面還存在很多問題。

          在國內,雖然有部分品牌拿到了批文,不過是妝字號的。

          也就是說,在國內溶脂針可以外用涂抹皮膚,但用于皮下注射是不合法的,在正規的醫美機構是沒有的。

          動圖來源于soogif

          雖然美白針和溶脂針,在國內都是不合法的醫美項目,但是在醫美網站上還是能看到它們的身影。

          希望有關部門加強監管,也希望各位愛美人士一定要慎重。

          愛美沒有錯,人人都喜歡追求美。

          但如果你想去做醫美項目,一定要選擇正規的醫療機構和執業醫師,切記要看看有沒有資質證明

          遠離那些來源不明「三無產品」。

          畢竟臉只有一張,仙女們請慎重選擇呀~

          別忘了轉告自己最好的小姐妹,一起避雷,一起變美。


          參考資料:

          1.上海衛健委,滬衛監部門加強醫療美容領域監管!來看警示案例http://wsjkw.sh.gov.cn/gzdt1/20200708/1bcd29f7cfa641979660a4f92520ab7a.html

          2.《每周質量報告》 20131201黑心美白針。http://tv.cctv.com/2013/12/01/VIDE1385876522401836.shtml


          主站蜘蛛池模板: 免费观看日本污污ww网站一区 | 精品91一区二区三区| 亚洲一区二区三区免费在线观看 | 精品视频午夜一区二区| 一区二区无码免费视频网站| 狠狠做深爱婷婷综合一区 | 好爽毛片一区二区三区四无码三飞| 精品深夜AV无码一区二区| 久久久精品人妻一区二区三区 | 中文乱码人妻系列一区二区| 夜色阁亚洲一区二区三区| 亚洲一区二区三区高清不卡| 国产精品毛片一区二区三区 | 国产香蕉一区二区精品视频| 国产凹凸在线一区二区| 一区二区三区美女视频| 无码av不卡一区二区三区| 国产香蕉一区二区三区在线视频 | 亚洲福利精品一区二区三区| 亚洲国产成人久久一区WWW| 婷婷亚洲综合一区二区| 精品无码中出一区二区| 国产在线一区二区| 国产日韩一区二区三区| 成人精品一区二区三区校园激情| 国产高清视频一区二区| 亚洲国产精品一区二区第一页免| 国产一区二区在线视频播放| 亚洲美女高清一区二区三区 | 69福利视频一区二区| 韩国福利一区二区美女视频| 无码av中文一区二区三区桃花岛| 色窝窝免费一区二区三区| 国产一区二区三区精品久久呦| 精品人体无码一区二区三区| 国产经典一区二区三区蜜芽| 波多野结衣一区在线| 久久er99热精品一区二区| 亚洲av无码一区二区三区不卡 | 精品一区二区三区四区| 国产精品综合AV一区二区国产馆|